Захват исключений при разборе запроса - PullRequest
2 голосов
/ 14 января 2011

У меня есть веб-служба ASP.NET, и некоторые поля в запросе определены как перечисления.При вводе пустого или недопустимого значения ответ возвращается как:

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 ]

2 голосов
/ 14 января 2011

Нет, это невозможно сделать с помощью веб-служб ASMX.

Естественно, вы можете сделать это с WCF.

Конечно, было бы лучше, если бы ваш клиент отправлял действительные данные,Возможно, вы захотите узнать, почему это не так.

0 голосов
/ 14 января 2011

Конечно, это будет выглядеть примерно так:

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();
}
...