В настоящее время я делаю службу WCF, и в то время как я разрабатывал службу, действовал так, как должен (с помощью Visual Studio Web Expres). У меня есть приложение silverlight, которое потребляет услугу.
Я написал службу WCF в библиотеке классов и реализуется веб-приложением ASP.NET. Когда я использовал Visual Studio ASP.NET Development Server, сервис был доволен и дал мне все, о чем я просил.
Теперь я внедрил службу на сервере IIS 7. И сервис больше не возвращает то, о чем я прошу. Вместо этого в Chrome я получаю следующее сообщение:
Но если я перейду к сервисному URL, сервис скажет, что он готов к рок-н-роллу:
Как вы можете видеть из сообщения об ошибке, полученной от Chrome, заключается в том, что текст, возвращаемый службой, является исходным кодом с этой страницы "surf to".
Моя модель сервиса Web.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_OnlineCreatorServiceContract" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="OnlineCreatorServiceBehavior"
name="OnlineCreator.ServiceLibrary.OrderDataService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_OnlineCreatorServiceContract"
name="basicHttpBinding" contract="OnlineCreator.ServiceLibrary.IOrderDataService" />
<endpoint address="mex" binding="mexHttpBinding" name="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="OnlineCreator.Web.OnlineCreatorServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="OnlineCreatorServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
И мой ServiceReferences.ClientConfig:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://subdomain.domain.com/mapWithServiceInIt/OnlineCreatorService.svc"
binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"
contract="OnlineCreatorService.IOrderDataService" name="basicHttpBinding" />
</client>
</system.serviceModel>
</configuration>
Поскольку моя служба находится на поддомене, я использовал следующий ClientAccessPolicy.xml:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Как видите, это не может быть проблемой, но для полноты картины я поместил это здесь.
Это мой первый сервис WCF, и он работал отлично, пока я не поместил его на сервер IIS. У кого-нибудь есть подсказка, почему я получаю эту ошибку и как ее исправить?