WP7アプリケーションからWCFサービスを使用しています。両方とも単一のVSソリューションに含まれています。 FaultExceptionを返すまでは、すべてうまくいきました。FaultExceptionを使用して未処理の例外<T>(WCFおよびWP7アプリケーションあり)
私のWCFサービスからFaultExceptionを投げるとき、私はメッセージ受け取る私の代理でEndInvokeを上「タイプの未処理の例外が 『System.ServiceModel.FaultException`1』 System.ServiceModel.dllで発生しました」。私がcontinueを押すと、例外は泡立ちません。私のハンドラコードは決してヒットしません。
私はすべてが適切に配線されていると信じています。私は、この問題を解決するために一日中ウェブを精査するのに多くの例を見てきました。私がFaultExceptionをスローしなくても、私のアプリケーションは正常に動作します。
VS Debug> Exceptionsダイアログで、CLR/System.ServiceModelの下でFaultExceptionとFaultExceptionを無効にしようとしました。私はまた、ツール>オプション、デバッグ>一般に行き、 "例外アシスタントを有効にする"と "コードを有効にする(管理のみ)"を無効にしました。 。
インタフェースコード -
[OperationContract]
[FaultContract(typeof(NotAuthorizedException))]
List<MyResult> GetValues(DateTime beginDate, DateTime endDate);
例外の種類 -
[DataContract]
public class NotAuthorizedException
{
[DataMember]
public string Message { get; set; }
}
例外をスローするためにサーバーコード -
throw new FaultException<NotAuthorizedException>(
new NotAuthorizedException(),
new FaultReason("Not authorized."),
new FaultCode("Sender"));
WCFサービスへ
クライアントコール -
try
{
MyServiceClient myService = new MyServiceClient();
myService.GetValuesCompleted += new EventHandler<GetValuesCompletedEventArgs>(myService_GetValuesCompleted);
myService.GetValuesAsync(DateTime.Now, DateTime.Now.AddMonths(6));
}
catch (FaultException<NotAuthorizedException>)
{
//handle error here
}
それは(Reference.csに)破る -
プロキシコードが変更されていないコードは、 "サービス参照の追加" メニューから生成されるSystem.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult> _result = ((System.Collections.ObjectModel.ObservableCollection<Namespace.MyService.MyResult>)(base.EndInvoke("GetValues", _args, result)));
項目。
これは単純なものでなければなりませんが、私はそれを見ていません!
今愚かな私にそれをやっているところの
myService_GetValuesCompleted
でFaultException<NotAuthorizedException>
をキャッチすべきであると信じて!サービスを非同期で呼び出すのには使用されません。ありがとう! –