Ошибка службы WCF в IIS с метаданными - PullRequest
1 голос
/ 19 декабря 2010

Я пытаюсь опубликовать сервис в IIS, он собирается и работает нормально на сервере разработки ASP.NET. При работе в IIS я могу получить метаданные, перейдя к службе или добавив ссылку на службу в Visual Studio. Но когда я вызываю метод из моего клиентского приложения, он вылетает из-за внутренней ошибки сервера. Итак, я пошел в журнал событий и нашел это:

WebHost failed to process a request.
 Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/8810861
 Exception: System.Web.HttpException (0x80004005): There was no channel actively listening at 'http://mysite.net/soundhubservice.svc/$metadata'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening. ---> System.ServiceModel.EndpointNotFoundException: There was no channel actively listening at 'http://mysite.net/soundhubservice.svc/$metadata'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening.
   at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
   at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
 Process Name: w3wp
 Process ID: 1080

Мой Web.Config выглядит примерно так:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="SoundHub.Services.SoundHubService" behaviorConfiguration="StreamingServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/SoundHubServive"/>
          </baseAddresses>
        </host>
        <endpoint address="service" binding="basicHttpBinding" bindingConfiguration="httpBuffering" contract="SoundHub.Services.ISoundHubService"/>
        <endpoint address="stream" binding="basicHttpBinding" bindingConfiguration="HttpStreaming" contract="SoundHub.Services.ISoundHubStreamService"/>
        <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />-->
      </service>
    </services>

    <bindings>
      <basicHttpBinding>
        <binding name="HttpStreaming" maxReceivedMessageSize="67108864" transferMode="Streamed"/>
        <binding name="httpBuffering" transferMode="Buffered" />
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="StreamingServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

Пробовал несколько комбинаций настроек, которые я нашел при поиске в Интернете, но ничего не помогло, всегда одна и та же ошибка.

Спасибо Bruno

1 Ответ

0 голосов
/ 15 января 2011

У меня была эта проблема, когда один из возвращенных мной объектов содержал перечисление; Оказывается, он не мог понять, как его сериализовать.

Если это ваша проблема, попробуйте вернуть значение int для перечисления (или строковое значение) и привести его к перечислению на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...