在请求解析期间捕获异常

时间:2011-01-14 11:32:07

标签: web-services .net-2.0 asmx

我有一个ASP.NET Web服务,请求中的一些字段被定义为枚举。输入空白或无效值时,响应将返回:

Parameter name: type ---> System.ArgumentException: Must specify valid information for parsing in the string.
   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
   at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

是否可以捕获这样的错误并返回基于XML的响应?

2 个答案:

答案 0 :(得分:2)

不,使用ASMX Web服务无法做到这一点。

当然,您可以使用WCF执行此操作。

当然,如果您的客户发送有效数据会更好。你可能想知道它们为什么不是。

答案 1 :(得分:-1)

当然,它看起来像这样:

try
{
    Enum.Parse(Type enumType, String value, Boolean ignoreCase)
}
catch (ArgumentException e)
{
   //Serialise exception information from 'e' into XML
   //(not shown here) and set it as the response
   Response.Write(xmlMessage);
   Response.End();
}