У меня есть служба WCF, которая отлично работает локально, на сервере и в Azure. Однако я пытаюсь развернуть тот же код на сайтах RackSpace (среда общего хостинга работает под управлением .NET 4.0. IIS7 и Windows Server 2008) и работаю со следующей ошибкой, когда служба возвращает ответ:
Message:[System.ServiceModel.ProtocolException] = {"Тип содержимого text/html ответного сообщения не соответствует типу содержимого привязки (text/xml; charset=utf-8). При использовании пользовательского кодировщика Убедитесь, что метод IsContentTypeSupported реализован правильно.Первые 1024 байта рез...
InnerException:_innerException = {"Удаленный сервер вернул ошибку: (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" />