我是WCF的新手并尝试使用WebHttpBinding
绑定构建演示WCF项目。
项目工作正常,但我遇到了故障异常的概念。下面是我用于生成错误异常的代码,但在客户端,我得到的是(400)Bad Request 错误,而InnerException为null。我哪里出错?
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");
}
}
答案 0 :(得分:0)
400错误对于故障异常是正确的,因为您向用户指示他们提供的内容可能有问题。
提升FaultException
时没有内部异常,因为FaultException
的核心概念是它跨技术(互操作性)和内部异常的概念非常特定于.NET。
如果您真的想要传递Exception
,可以使用FaultException来指定通用参数,然后将其设置为Exception
。然后你会创建并提高它。
要记住的另一个方面是你如何处理你的错误,在你的代码中你抛出了一个全新的例外。这意味着变量ex中的所有信息都将丢失。除非你打算隐藏某些东西,否则你可以试试这个
catch (FaultException ex)
{
throw;
}
此选项采用原始FaultException
并再次引发它,从而保留其中的所有信息。
最后,在您的问题之外,SQL让我感到害怕 - 看起来它可能容易受到SQL injection attack的攻击 - 只是您可能要查看的内容。