На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Вопрос по конфигурированию WCF
    Изчуаю сейчас wcf, кучу примеров уже пересмотрел, такой вопрос:
    Есть WCF dll с таким конфигом (который нагенерил мастер):
    ExpandedWrap disabled
      <configuration>
        <system.web>
          <compilation debug="true" />
        </system.web>
        <system.serviceModel>
          <services>
            <service name="RRDM.Test1Service.Test1" behaviorConfiguration="RRDM.Test1Service.Test1Behavior">
              <host>
                <baseAddresses>
                  <add baseAddress = "http://localhost:8731/Design_Time_Addresses/RRDM.Test1Service/Test1/" />
                </baseAddresses>
              </host>
              <endpoint address ="" binding="wsHttpBinding" contract="RRDM.Test1Service.ITest1">
                <identity>
                  <dns value="localhost"/>
                </identity>
              </endpoint>
              <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
          </services>
          <behaviors>
            <serviceBehaviors>
              <behavior name="RRDM.Test1Service.Test1Behavior">
                <serviceMetadata httpGetEnabled="True"/>
                <serviceDebug includeExceptionDetailInFaults="False" />
              </behavior>
            </serviceBehaviors>
          </behaviors>
        </system.serviceModel>
      </configuration>


    Для того чтобы захостить сервис делаю так:
    ExpandedWrap disabled
      var serviceUri = new Uri("http://localhost:8080/");
      using (ServiceHost host = new ServiceHost(typeof (Test1), serviceUri))
      {
          host.AddServiceEndpoint(typeof(ITest1),
                                  new WSHttpBinding(), "Test1");
       
          host.Open();
      }

    И соответственно клиентский конфиг:
    ExpandedWrap disabled
      <configuration>
          <system.serviceModel>
              <bindings>
                  <wsHttpBinding>
                      <binding name="WSHttpBinding_IContentExtractor" closeTimeout="00:01:00"
                          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                          maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                          messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                          allowCookies="false">
                          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                          <reliableSession ordered="true" inactivityTimeout="00:10:00"
                              enabled="false" />
                          <security mode="Message">
                              <transport clientCredentialType="Windows" proxyCredentialType="None"
                                  realm="" />
                              <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                  algorithmSuite="Default" establishSecurityContext="true" />
                          </security>
                      </binding>
                  </wsHttpBinding>
              </bindings>
              <client>
                  <endpoint address="http://localhost:8080/ContentExtractor"
                      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IContentExtractor"
                      contract="ServiceReference1.IContentExtractor" name="WSHttpBinding_IContentExtractor">
                      <identity>
                          <dns value="localhost" />
                      </identity>
                  </endpoint>
              </client>
          </system.serviceModel>
      </configuration>

    1. Почему адрес из конфига WCF dll нигде не используется: http://localhost:8731/Design_Time_Addresses/RRDM.Test1Service/Test1/
    2. Видимо, чтобы захостить сервис нужно брать адрес из этого конфига?
      Цитата debugx @
      1. Почему адрес из конфига WCF dll нигде не используется: http://localhost:8731/Design_Time_Addresse...1Service/Test1/
      2. Видимо, чтобы захостить сервис нужно брать адрес из этого конфига?

      Потому, что ты указываешь другой адрес в конструкторе ServiceHost. В базовых адресах WCF сервиса не может быть несколько адресов с одной и той же схемой (http). Если хочешь, чтобы использовался адрес из конфига - создавай ServiceHost только с первым параметром.
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0171 ]   [ 15 queries used ]   [ Generated: 17.05.24, 11:29 GMT ]