3

VS 2012 で .net 4.5 の Telerik OpenAccess で WCF Plain サービスを使用しようとしています。

私は telerik 開発者マニュアルを試し、サービスとクライアントを作成しました。

私が入れたサービスインターフェース IEntitiesModel に

[OperationContract]
[FaultContract(typeof(string))]
PersistentDto ReadPersistentDto(string dtoKey);

メソッドの EntitiesModel.SVC では、最初の試行として簡単な構成を使用しました。

public PersistentDto ReadPersistentDto(string dtoKey)
{
   throw new FaultException("test");
} 

Consumer のユーザー コードに、例外のキャッチを追加しました。

問題は次のとおりです。

サービスが呼び出されるたびに、Visual Studio が "throw new FaultException" で停止し、FaultException がユーザーコードによって処理されなかったというエラー メッセージが表示されます。F5 を押し続けると、消費者のユーザーコードによっても例外がキャッチされます。

サービスで停止するのはなぜですか?

私の理解では、FaultException はサービスの消費者に渡されるべきものです。

FaultException を正しくスローするにはどうすればよいですか?

4

4 に答える 4

9

に移動し、行の列のDebug -> Exceptions下にあるチェックボックスをオフにします。ThrownCLR exception

そのチェックボックスをオンにすると、例外をスローしているすべての場所でデバッガーが停止します。

于 2012-10-24T07:05:55.463 に答える
1

これは設定に関係しています。[ツール]-> [オプション] に移動して、必要な設定を行うことができます。デバッグ メニューに切り替えて
、[例外アシスタントを有効にする] と [
自分のコードのみ を有効にする] のチェックを外します。ここに画像の説明を入力

于 2016-05-11T04:29:32.180 に答える
0

サーバーは、クライアントが例外を処理することを知りません(どのように処理する必要がありますか?)。これが、デバッガーが未処理であると通知する理由です。

また、次のような障害をスローしました。

public PersistentDto ReadPersistentDto(string dtoKey)
{
   throw new FaultException<string>("test");
} 

これはあなたの宣言と一致します:

[FaultContract(typeof(string))]
于 2012-10-24T07:08:40.057 に答える
0

デバッグに関連しています。ただし、実行中にサービスを停止することはありません (例外を適切に管理しない限り)。

RV1987 が言ったように、VS で CLR 例外が有効になっている場合、例外がスローされるたびに通知されます。

于 2012-10-24T07:17:08.640 に答える