2

エラーメッセージは次のとおりです。

サーバーが開始したシャットダウンにより、出力セッションが自動的に閉じられたため、このチャネルを使用してメッセージを送信することはできなくなりました。DispatchRuntime.AutomaticInputSessionShutdown を false に設定して自動クローズを無効にするか、リモート サーバーでシャットダウン プロトコルを変更することを検討してください。

これは、WCF ルーター (wsHttpBinding または BasicHttpBinding から NetTcpBinding) への Web 要求を作成し、ルーターが WinService を要求したときに発生します。WinService が例外をスローすると、次のリクエストで上記のエラー メッセージが表示されます。これは、WCF ルーターによって作成されます。どこにも解決策はありませんでした。解決策を見つけるのに何日も費やしました。

解決策のない同様の問題へのリンク:

4

1 に答える 1

2

私が行った実用的なソリューションは次のとおりです。

  • 例外をスローしないで、FaultException をスローする

どうやってするか:

  • WinService インターフェイスで、応答コードの列挙型を定義します (以下の例)。
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "3.0.4506.2152")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "blah")]
public enum ErrorCode
{
    ERROR
}

あるいは単に

public enum ErrorCode
{
    ERROR
}
  • 次に、例外の代わりに、定義された列挙型を使用して FaultException をスローします。

throw new FaultException(ErrorCode.ERROR, new FaultReason("blah"), new FaultCode("Sender"));

  • 以上です!これで、この例外を生成するリクエストを送信できますが、チャネルは閉じられません
于 2013-01-29T10:12:42.703 に答える