Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.143.207] |
|
Сообщ.
#1
,
|
|
|
Изчуаю сейчас wcf, кучу примеров уже пересмотрел, такой вопрос:
Есть WCF dll с таким конфигом (который нагенерил мастер): <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> Для того чтобы захостить сервис делаю так: var serviceUri = new Uri("http://localhost:8080/"); using (ServiceHost host = new ServiceHost(typeof (Test1), serviceUri)) { host.AddServiceEndpoint(typeof(ITest1), new WSHttpBinding(), "Test1"); host.Open(); } И соответственно клиентский конфиг: <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. Видимо, чтобы захостить сервис нужно брать адрес из этого конфига? |
Сообщ.
#2
,
|
|
|
Цитата debugx @ 1. Почему адрес из конфига WCF dll нигде не используется: http://localhost:8731/Design_Time_Addresse...1Service/Test1/ 2. Видимо, чтобы захостить сервис нужно брать адрес из этого конфига? Потому, что ты указываешь другой адрес в конструкторе ServiceHost. В базовых адресах WCF сервиса не может быть несколько адресов с одной и той же схемой (http). Если хочешь, чтобы использовался адрес из конфига - создавай ServiceHost только с первым параметром. |