Ошибки WCF на IIS 7 - PullRequest
       31

Ошибки WCF на IIS 7

0 голосов
/ 15 июля 2011

В настоящее время я делаю службу WCF, и в то время как я разрабатывал службу, действовал так, как должен (с помощью Visual Studio Web Expres). У меня есть приложение silverlight, которое потребляет услугу.

Я написал службу WCF в библиотеке классов и реализуется веб-приложением ASP.NET. Когда я использовал Visual Studio ASP.NET Development Server, сервис был доволен и дал мне все, о чем я просил.

Теперь я внедрил службу на сервере IIS 7. И сервис больше не возвращает то, о чем я прошу. Вместо этого в Chrome я получаю следующее сообщение: The error through Chrome

Но если я перейду к сервисному URL, сервис скажет, что он готов к рок-н-роллу: if I surf to the service

Как вы можете видеть из сообщения об ошибке, полученной от 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. У кого-нибудь есть подсказка, почему я получаю эту ошибку и как ее исправить?

1 Ответ

0 голосов
/ 20 июля 2011

После того как я углубился в WCF и IIS, я обнаружил, что вам нужно активировать WCF на сервере. И это довольно процесс. Чтобы сделать это правильно, я очистил свой текущий сайт на IIS, чтобы начать все сначала, а затем перешел на следующие страницы, чтобы заставить WCF работать:

http://blah.winsmarts.com/2008-4-Host_a_WCF_Service_in_IIS_7_-and-amp;_Windows_2008_-_The_right_way.aspx http://msdn.microsoft.com/en-us/library/ms751527.aspx http://blogs.msdn.com/b/blambert/archive/2009/02/13/enable-iis.aspx http://edinkapic.blogspot.com/2009/02/talking-to-wcf-service-from-silverlight.html

Я сделал очень простой сервис HelloWorld, чтобы проверить все, и как только все заработало, я перенес его на свой сервис. Это первое дало мне исключение. Но это было скоро исправлено, потому что строки соединения не были установлены правильно.

...