0

以前は、通常の 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];

しかし、このように動的に生成されたメソッドを呼び出すと、次のようなエラーが発生します。 . これは、コントラクトの不一致 (送信者と受信者の間のアクションの不一致) または送信者と受信者の間のバインド/セキュリティの不一致のいずれかが原因である可能性があります. 送信者と受信者が同じコントラクトと同じバインディング (セキュリティ要件などを含む) を持っていることを確認してください.メッセージ、トランスポート、なし)」

4

1 に答える 1

0

OK、解決策は Web.config でエンドポイントを明示的に定義することです。これにより、早期にそれをキャッチできます。詳細はこちらを参照してください

于 2010-12-17T08:59:30.197 に答える