Проблемы конфигурации WCF на Общем хостинге - PullRequest
1 голос
/ 03 марта 2011

У меня есть служба 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"  />
...