0

私は現在WCFサービスを作成しており、開発中はサービスが正常に動作しました(Visual Studio Web Expresを使用)。サービスを利用しているSilverlightアプリケーションがあります。

WCFサービスをクラスライブラリに記述し、ASP.NETWebアプリケーションによって実装されています。Visual Studio ASP.NET Development Serverを使用している間、サービスは満足していて、要求したすべてのものを提供してくれました。

次に、IIS7サーバーにサービスを実装しました。そして、サービスは私がもう求めているものを返しません。代わりに、Chromeでは次のメッセージが表示されます。 Chromeを介したエラー

しかし、サービスのURLにアクセスすると、サービスはロックンロールの準備ができていると言います。 サービスにサーフィンしたら

Chromeから得られるエラーでわかるように、サービスが返すテキストは、その「サーフ先」ページのソースコードです。

私の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サーバーに配置するまでは完全に機能していました。なぜ私がこのエラーを受け取るのか、そしてそれを修正する方法の手がかりを誰かが持っていますか?

4

1 に答える 1

0

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 サービスを作成し、すべてが機能したらすぐにサービスに移植しました。それは最初に私に例外を与えました。しかし、接続文字列が正しく設定されていなかったため、すぐに修正されました。

于 2011-07-20T11:06:36.770 に答える