2012-03-31 7 views
1

私のサービスがうまくいかない理由を調べようと2日後に、私はついに原因を見つけました。新しいFaultException<AuthenticationException>を投げようとするたびに、サーバーは実際にこれを投げつけるのではなく、それ自体をキャッチしています。WCFサービスが奇妙な例外を投げる

何が起こっているのですか?例外をスローすると、サーバは処理されていないSystem.ServiceModel.FaultExceptionにクラッシュしています。ここで

は私のカスタム例外クラスです:

[DataContract] 
public class AuthenticationException 
{ 
    private string validationError; 

    [DataMember] 
    public string ValidationError 
    { 
     set { validationError = value; } 
     get { return validationError; } 
    } 

    public AuthenticationException() 
    { 

    } 

    public AuthenticationException(string valError) 
    { 
     validationError = valError; 
    } 
} 

そして、私のインターフェイス:

[ServiceContract] 
public interface IAuthenticator 
{ 
    [OperationContract] 
    [FaultContract(typeof(AuthenticationException))] 
    Account authenticateApplication(string userName, string Password); 

これを引き起こす可能性がありますか?

編集:これは私が例外をスローしています方法です:

  catch (Exception) 
      { 
       throw new FaultException<AuthenticationException>(new AuthenticationException("There was a general error during the process."), new FaultReason("Error")); 
      } 
+0

いつ例外を投げていますか?どのようにサーバーがクラッシュするのですか? – surfen

+0

サーバが500の内部サーバエラーを返すことによってクラッシュしました。これは、上で説明したように未処理のSystem.ServiceModel.FaultException1'が見つかったためです。 – TheGateKeeper

+0

あなたはどのようにサービスをホストしていますか? IIS? – surfen

答えて

1

は多分あなたのIISサーバーは、クライアントに例外を渡す許可するように構成されていません。

手順2「リモートクライアントの詳細なエラーを有効にする」に従います。 this post

+0

これは簡単だとは思えません。なぜこの情報は見つけにくいのですか?私は、例外のためのカスタムエラーを有効にする必要があるところで言及を見たことがない! – TheGateKeeper

+0

リンクがダウンしました – JGilmartin

+0

リンクが更新されました。ありがとう@JGilmartin – surfen

関連する問題