1

WCF サービスを使用し、ASP.NET Web フォームでホストされる Silverlight アプリケーションを継承しました。アプリケーションは HTTP および HTTPS で実行する必要があり、顧客独自のサーバーにインストールされます。クライアント コードはもともと、ローカルでホストされているサービスを指す [サービス参照の追加] を使用して生成されたため、私の ServicesReferences.ClientConfig には明らかに localhost へのハードコーディングされた参照が含まれています。クライアントが使用するエンドポイント アドレスをプログラムで設定します。

私のコードは現在:

var binding = new BasicHttpBinding
    {
        MaxBufferSize = 2147483647,
        MaxReceivedMessageSize = 2147483647,
    };
binding.Security.Mode = HtmlPage.Document.DocumentUri.Scheme.StartsWith("https")
    ? BasicHttpSecurityMode.Transport
    : BasicHttpSecurityMode.None;

var documentUri = HtmlPage.Document.DocumentUri;
var builder = new UriBuilder(
        documentUri.Scheme,
        documentUri.Host, 
        documentUri.Port, 
        documentUri.LocalPath.Replace("hostpage.aspx", "MyService.svc"));

var client = new CustomerDetailServicesClient(binding, new EndpointAddress(builder.Uri));
client.ChannelFactory.Faulted += OnChannelFactoryFaulted;
client.DoSomething();

HTTP を使用するとこれは正常に機能しますが、HTTPS 経由でアクセスしようとすると、WCF サービスへの呼び出しごとに 404 で失敗します。Fiddler を使用すると、変更されているのは URI スキームだけであることがわかります。サービスの HTTPS アドレスを入力すると、期待されるメタデータ ページが表示されます。

私が行方不明であることは明らかですか?

4

1 に答える 1

0

湿ったニシンで私を平手打ちしてください。Web サービスの HTTPS バインディングは、web.config でコメントアウトされていました (すべてのお客様がサーバーで HTTPS を実行できる/実行したいわけではないため、IIS が HTTPS 用に構成されていない場合に HTTPS 用の WCF バインディングを使用すると、WCF が多くのノイズを発生させます)。方法)。

ぐっすり眠ることが問題にもたらす新鮮な視点と明晰さは驚くべきものです。

于 2012-04-16T22:55:21.360 に答える