当前位置:  开发笔记 > 编程语言 > 正文

如何在Wcf服务上抛出异常并在客户端捕获它?

如何解决《如何在Wcf服务上抛出异常并在客户端捕获它?》经验,为你挑选了1个好方法。

服务演示代码:

  public class Login : UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
            if (new ProjectContext().Users.Count(x => x.Username == userName && x.Password == password) == 0)
            {
                throw new FaultException("Invalid login");
            }
        }  
    }

客户代码演示:

internal bool LoginOnWcf(string address, string password) 
        {
            try
            {
                service.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
                service.ClientCredentials.UserName.UserName = address;
                service.ClientCredentials.UserName.Password = password;
                user = service.GetUserById(address);
                return true;
            }
            catch (FaultException ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }

Web.config演示:


      
        
          
          
          
            
              
            
            
            
          
        
        
          
          
          
          
        
      

当我扔FaultException,服务崩溃.我希望能够抓住FaultException客户端并保持服务正常运行.

我希望能很好地解释我的问题并提供必要的代码.



1> John Koerner..:

WCF使用Faults将错误从服务器抛出到客户端.您可以使用a FaultException启动,然后根据需要创建自己的自定义故障.

因此,在您的示例中,您可以简单地执行以下操作.

throw new FaultException("Invalid login")

该文章提供了有关如何使用WCF实现故障一大堆更多细节.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有