以前は、通常の WCF サービスの CreateServiceHost をオーバーライドし、そこでエンドポイントを変更していました (いくつかのメソッドを動的に追加しました)。Azure に移行し、WCF サービス Web ロールを使用すると、myServiceHost.Description.Endpoints が空になります (全体が正常に機能するため、これは正常だと思います)。しかし、利用可能なエンドポイントがない場合、どうすればエンドポイントを変更できますか?
アンドレス
// I can access this in Azure WCF Service Web Role
RoleInstanceEndpoint azureEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"];
// but I need something like this (to modify it, as I used to do in plain WCF)
ServiceEndpoint usualEndpoint = myServiceHost.Description.Endpoints[0];
PS開いた後に変更できます:
myServiceHost.Opened += AfterOpened;
その後
public static void AfterOpened(object sender, EventArgs e)
{
ServiceHost myServiceHost = sender as ServiceHost;
ServiceEndpoint usualEndpoint = sh.Description.Endpoints[0];
しかし、このように動的に生成されたメソッドを呼び出すと、次のようなエラーが発生します。 . これは、コントラクトの不一致 (送信者と受信者の間のアクションの不一致) または送信者と受信者の間のバインド/セキュリティの不一致のいずれかが原因である可能性があります. 送信者と受信者が同じコントラクトと同じバインディング (セキュリティ要件などを含む) を持っていることを確認してください.メッセージ、トランスポート、なし)」