0

私は認める数時間苦労してきました。Silverlight アプリケーションと WCF Web サービスの間のバインディング/構成で何か不足しているに違いありません。しばらくは機能していましたが、誤っていくつかの設定を変更したに違いなく、もう機能しません。

Visual Studio でデバッグすると、Service と Silverlight アプリケーションの両方が同時に起動し、デバッグ用に web.config ファイルで Windows 認証が無効になります。展開したら、構成ファイルに戻って変更し、Windows セキュリティ/トランスポートを有効にして、Web サービス側でユーザー資格情報を取得できるようにします。

IIS を使用して WCF サービスと Silverlight アプリケーションの両方を別のマシンに展開すると、WCF サービスに接続しようとすると、Silverlight から "Not Found" エラーが発生します。誰かが存在するさまざまな構成ファイルと、それぞれが何を指しているべきかを説明してもらえますか? それぞれの場所にある構成ファイルは次のとおりです。

wwwroot\webserviceapp\web.config

<?xml version="1.0" encoding="UTF-8"?>

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpEndpointBinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServiceBehavior" name="WebserviceName.Service1">
    <endpoint address="" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpEndpointBinding"
      name="BasicHttpEndpoint" contract="WebserviceName.IService1">
    </endpoint>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

wwwroot\web.config - これは Silverlight の web.config だと思いますか?

<?xml version="1.0" encoding="UTF-8"?>

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                      <security mode="TransportCredentialOnly">
                        <transport clientCredentialType="Windows" />
                      </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://<<<ip_to_machine>>>/webserviceapp/Service1.svc" 
            binding="basicHttpBinding" 
            bindingConfiguration="BasicHttpEndpoint" 
            contract="ServiceReference1.IService1"
            name="BasicHttpEndpoint" />
    </client>
</system.serviceModel>
<system.webServer>
    <defaultDocument>
        <files>
            <add value="ProjectTestPage.html" />
        </files>
    </defaultDocument>
</system.webServer>

wwwwroot\ClientBin\SilverlightApp.xap (ServiceReferences.ClientConfig ファイル):

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpEndpoint" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                                <security mode="TransportCredentialOnly" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://<<<ip_to_machine>>>/webserviceapp/Service1.svc" 
                binding="basicHttpBinding"
            bindingConfiguration="BasicHttpEndpoint" 
            contract="ServiceReference1.IService1"
            name="BasicHttpEndpoint" />
    </client>
</system.serviceModel>

これらは、私が間違っていない限り、すべてを駆動しているように見える 3 つの構成ファイルですか? 私はある環境で開発し、別の環境にデプロイするので、これらのファイルを変更して適切なリソースを指すようにする必要があるようです。Silverlight アプリケーションを新しいマシンにデプロイした後に実行すると、アプリケーションがロードされます。読み込みが完了すると、最初の Web サービス呼び出しが例外で失敗し、Chrome コンソールに次のように表示されます。

Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://<<<ip_to_machine>>>/webserviceapp/Service1.svc
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://<<<ip_to_machine>>>/webserviceapp/Service1.svc
Uncaught Error: Unhandled Error in Silverlight Application An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at Project.ServiceReference1.GetAllNewsCompletedEventArgs.get_Result()
   at Project.View.Home1.ClientGetAllNewsCompleted(Object pSender, GetAllNewsCompletedEventArgs pEventArgs)
   at Project.ServiceReference1.Service1Client.OnGetAllNewsCompleted(Object state)

私は、サービスが決してヒットしないことを 99% 確信しています。呼び出されている関数の一番上にログ ステートメントがあり、何もログに記録されません。

IIS 構成: Web サービス認証: 匿名 = 無効 ASP.NET 偽装 = 無効 Windows 認証 = 有効

既定の Web サイト (Silverlight アプリがホストされている場所): 匿名 = 無効 ASP.NET 偽装 = 無効 Windows 認証 = 有効

誰にも提案がありますか、またはデバッグを支援するために私からの情報が必要ですか?

編集:別のマシンからサービスに移動して、サービス wsdl を正常に表示できることは注目に値します。例えば:

http://ipaddress/webserviceapp/Service1.svc

私はこれを問題なく見ることができます。エラーはありません。

4

1 に答える 1