У меня есть служба WCF, которая отлично работает локально, на сервере и в Azure. Однако я пытаюсь развернуть тот же код на сайтах RackSpace (Shared Hosting Environment работает под управлением .NET 4.0. IIS7 и Windows Server 2008) и запускаю следующую ошибку, когда служба возвращает ответ:
Сообщение: [System.ServiceModel.ProtocolException]
= {"Тип содержимого text / html ответного сообщения не соответствует
тип содержимого привязки (text / xml;
кодировка = UTF-8). При использовании кастома
кодировщик, убедитесь, что
IsContentTypeSupported метод является
реализовано правильно. Первые 1024
байт резерва ...
InnerException: _innerException = {"The
удаленный сервер вернул ошибку: (500)
Внутренняя ошибка сервера. "}
Дело в том, что, хотя ответ является ошибкой, метод успешно получает данные и передает их в базу данных, поэтому проблема заключается в ответе от метода WCF к клиентскому приложению. Кто-нибудь сталкивался с этим раньше? Я знаю, что, возможно, виноваты уровни доверия на виртуальном хостинге, но, похоже, ничто из того, что я пробовал, не помогло устранить ошибки, которые я получаю.
Вот моя конфигурация веб-приложения, использующего службу WCF:
Переплет:
<binding name="BasicHttpBinding_IAccountService" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
И конечная точка:
<client>
<endpoint address="http://sitename.com/Services/AccountService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAccountService"
contract="AccountService.IAccountService" name="BasicHttpBinding_IAccountService" /></client>
Это привязка по умолчанию / конечная точка, генерируемая при использовании «Добавить ссылку на службу»
Приложение, в котором размещается служба WCF, не использует какие-либо пользовательские конфигурации, но вот часть поведения его Web.Config:
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />