0

我是 WCF 新手,正在尝试使用WebHttpBinding绑定构建演示 WCF 项目。

这些项目工作正常,但我坚持错误异常的概念。下面是我用来生成故障异常的代码,但在客户端我得到的是(400) Bad Request错误并且 InnerException 为空。我哪里错了?

    public DataTable GetCreativesData(string id,string type)
    {
        try { 
        DataAccess da = new DataAccess();
        string qryStr = @"select * from dbo.tbMyTable";
        if (type != null && type != "")
            qryStr += " WHERE1 type='"+type+"'";
        DataTable dt = da.GetDataTable(qryStr);
        return dt;
        }

       catch (FaultException ex) {
            throw new FaultException("Improper Query");
        }
     }
4

1 回答 1

0

400 错误对于错误异常是正确的,因为您向用户表明他们提供的内容可能有问题。

提出 .NET 时没有内部异常FaultException,因为它的核心概念FaultException是跨技术(互操作性)工作,并且内部异常的概念非常特定于 .NET。

如果你真的想传递一个Exceptiondown,你可以使用FaultException,它允许你指定一个通用参数,然后你将它设置为Exception. 然后,您将创建并提高它。

要记住的另一个方面是您如何处理错误,在您的代码中您正在抛出一个全新的异常。这意味着变量 ex 中的所有信息都丢失了。除非你打算隐藏一些东西,你可以试试这个

catch (FaultException ex) 
{
    throw;
}

此选项采用原始FaultException并再次提升它,从而保留其中的所有信息。

最后,在你的问题之外,SQL 让我害怕——看起来它可能容易受到SQL 注入攻击——这只是你可能想要检查的东西。

于 2014-11-25T05:37:39.013 回答