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 アドレスを入力すると、期待されるメタデータ ページが表示されます。
私が行方不明であることは明らかですか?