0

Silverlight アプリケーションがあり、アプリケーションは wcf (SSL/https) を使用して、iis でホストされているパブリック サービスに接続します。ブラウザでアプリケーションを起動すると、すべて正常に動作します。「Out of Browser Mode」でアプリケーションを起動するとすぐに、動作しなくなります。フィドラーの問題を理解しようとしましたが、フィドラーが実行されている限り、すべて正常に動作します。これについてインターネットで多くの投稿を見つけましたが、何も機能しませんでした。アイデアはありますか?フィドラーは正確に何をし、oobで実行しますか?

概要: 1.「ブラウザ内」ですべて正常 2.「ブラウザ外」で実行中のパブリック サービスへの接続なし 3. Fiddler が実行されている限り、「ブラウザ外」で実行中

以下は、私がどのように接続を行うかについての情報です。

助けてくれてどうもありがとう。

よろしくお願いします。マルク

ここに私がすべてを行う方法に関するいくつかの情報があります:

自己署名証明書がすべてに関係している可能性はありますか?

パブリック サービスへのクライアント側の接続は次のようになります。

 PublicServiceClient proxy;
    BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = new     BinaryMessageEncodingBindingElement();
    HttpsTransportBindingElement httpsTransportBindingElement = new HttpsTransportBindingElement();
    httpsTransportBindingElement.MaxBufferSize = int.MaxValue;
    httpsTransportBindingElement.MaxReceivedMessageSize = int.MaxValue;
    httpsTransportBindingElement.TransferMode = TransferMode.Buffered;
    Binding binding = new CustomBinding(binaryMessageEncodingBindingElement,     httpsTransportBindingElement);
    binding.SendTimeout = new TimeSpan(0, 0, _WcfTimeout);
    binding.ReceiveTimeout = new TimeSpan(0, 0, _WcfTimeout);
    binding.OpenTimeout = new TimeSpan(0, 0, _WcfTimeout);
    binding.CloseTimeout = new TimeSpan(0, 0, _WcfTimeout);
    proxy = new PublicServiceClient(binding, new EndpointAddress("https://" +     App.CurrentParameter.WcfDomain + "/PublicService.svc"));

バインディング サーバー側 (web.config):

   <binding name="Web.PublicService.customBinding0" sendTimeout="00:01:00" receiveTimeout="00:01:00" openTimeout="00:01:00" closeTimeout="00:01:00">
    <binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647">
    <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
    </binaryMessageEncoding>
    <httpsTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" keepAliveEnabled="false"/>
    </binding>

サービス サーバー側 (web.config):

  <service name="Web.PublicService">
    <endpoint address="" binding="customBinding"    bindingConfiguration="Web.PublicService.customBinding0" contract="Web.PublicService"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
4

1 に答える 1

0

Fiddler で HTTPS 復号化を無効にして (再起動すると)、アプリが Fiddler を介して動作しなくなった場合は、サーバーで使用されている自己署名証明書に問題があることを意味し、その証明書を信頼して修正する必要があります。

Fiddler で HTTPS 復号化を無効にしても問題が解決しない場合、問題はセキュリティ ゾーンの設定に関連している可能性があります。その理由の詳細については、 http://blogs.msdn.com/b/fiddler/archive/2010/11/22/fiddler-and-silverlight-cross-zone-cross-domain-requests.aspxを参照してください。

于 2013-03-25T22:03:21.203 に答える