#wcf #web-services #iis-7
#wcf #веб-службы #iis-7
Вопрос:
Я продолжаю получать 404 ошибки для службы WCF, размещенной в IIS. Служба является двусторонней службой. Я могу получить доступ к файлу .svc в веб-браузере. Однако, когда клиент пытается войти в систему, время ожидания истекает с ошибкой 404 Not Found. Фрагмент моего web.config выглядит следующим образом:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<trust level="Full"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" aspNetCompatibilityEnabled="false">
<baseAddressPrefixFilters>
<add prefix="http://seeinstacksproductions.com/"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<bindings>
<wsDualHttpBinding>
<binding name="dualHttp" receiveTimeout="00:30:00" maxReceivedMessageSize="1048576" sendTimeout="00:01:00">
<readerQuotas maxStringContentLength="99999999" maxArrayLength="9999999" maxBytesPerRead="999999"/>
<security mode="None"/>
</binding>
</wsDualHttpBinding>
</bindings>
<services>
<service name="OLII.Apps.Services.Automation.AutomatorService.WCFAutomatorService">
<host>
<baseAddresses>
<add baseAddress="http://seeinstacksproductions.com/"/>
</baseAddresses>
</host>
<endpoint address="Automator.svc" bindingConfiguration="dualHttp" binding="wsDualHttpBinding" contract="OLII.Apps.Services.ProxyClients.AutomatorServiceProxyClient.IWCFAutomatorService"/>
</service>
</services>
</system.serviceModel>
Я изменил запрос, выполняемый моим приложением, и он выглядит следующим образом:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</a:Action>
<a:MessageID>urn:uuid:f15d936e-e893-46cd-ae6a-43186cda91ef</a:MessageID>
<a:ReplyTo>
<a:Address>http://my-server/Temporary_Listen_Addresses/595b57ae-f2a0-4522-b636-1075e326c689/3a866e3c-c707-4fe8-b211-208affa1092a</a:Address>
<a:ReferenceParameters>
<ChannelInstance xmlns="http://schemas.microsoft.com/ws/2005/02/duplex">6</ChannelInstance>
</a:ReferenceParameters>
</a:ReplyTo>
<a:To s:mustUnderstand="1">http://seeinstacksproductions.com/Automator.svc</a:To>
</s:Header>
<s:Body>
<CreateSequence xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm">
<AcksTo>
<a:Address>http://my-server/Temporary_Listen_Addresses/595b57ae-f2a0-4522-b636-1075e326c689/3a866e3c-c707-4fe8-b211-208affa1092a</a:Address>
<a:ReferenceParameters>
<ChannelInstance xmlns="http://schemas.microsoft.com/ws/2005/02/duplex">6</ChannelInstance>
</a:ReferenceParameters>
</AcksTo>
<Offer>
<Identifier>urn:uuid:a2d993bb-1694-4373-a5fa-48f5ec01185b</Identifier>
</Offer>
</CreateSequence>
</s:Body>
</s:Envelope>
Спасибо
Ответ №1:
Вы должны описать свою сетевую топологию при возникновении проблемы с дуплексной связью wcf, находится ли ваш клиент в одной локальной сети с вашим сервером или он обращается к серверу через Интернет, в некоторых сетевых сценариях дуплексная связь не может быть использована.
Приветствия,
Gilad
Комментарии:
1. Я пробовал оба варианта — через Интернет и локально в своей локальной сети, и оба выдают ошибку 404.
2. Вы проверяли блоки брандмауэра?