Как обработать неправильный тип данных для WebService ASMX? - PullRequest
0 голосов
/ 03 октября 2018

Я работаю над сервисом ASMX.У меня есть метод с 3 входными параметрами, содержащими параметр типа INT и другой тип STRING.Во время тестирования, если я передаю строку в качестве параметра типа int, в браузере выдается исключение.Как справиться с этим исключением.Я попытался отладить, но отладчик даже не попал в функцию, исключение выдается еще до достижения внутренней части функции.Как я могу справиться с этим поведением.

Ниже приводится исключение:

System.ArgumentException: Невозможно преобразовать abc в System.Int32.Имя параметра: type ---> System.FormatException: входная строка была в неправильном формате.в System.Number.StringToNumber (String str, параметры NumberStyles, NumberBuffer & number, информация NumberFormatInfo, логический parseDecimal) в System.Number.ParseInt32 (String s, стиль NumberStyles, информация NumberFormatInfo) в System.String.System.IConvertible.Fomat32 (IFR)провайдера) в System.Convert.ChangeType (значение объекта, тип преобразование типа, провайдер IFormatProvider) в System.Web.Services.Protocols.ScalarFormatter.FromString (строковое значение, тип типа) --- конец трассировки стека внутренних исключений --- вSystem.Web.Services.Protocols.ScalarFormatter.FromString (строковое значение, тип Type) в System.Web.Services.Protocols.ValueCollectionParameterReader.Read (коллекция NameValueCollection) в System.Web.Services.Protocols.HtmlFormParameterReader.Reader.Reader.Reader.Readв System.Web.Services.Protocols.HttpServerProtocol.ReadParameters () в System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest ()

Это мой WebMethod:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetAlbums(int langid,int type, string title)
{
    langid = int.Parse(Microsoft.Security.Application.Encoder.JavaScriptEncode(langid.ToString()));
    type = int.Parse(Microsoft.Security.Application.Encoder.JavaScriptEncode(type.ToString()));
    title = Microsoft.Security.Application.Encoder.JavaScriptEncode(title);


    var TheJson = "";

    JavaScriptSerializer ser = new JavaScriptSerializer();

    try
    {
        var userid = from x in db.viwTjdeedCmsTypeAlbums
                     where x.Lang_ID == langid
                     where x.Album_TypeID == type
                     where x.Album_Title.Contains(title)
                     where x.Album_Live == true
                     select x;


        var jsonData = new
        {

            albums = userid.ToList()
        };


        TheJson = ser.Serialize(jsonData);
    }
    catch
    {
        TheJson = "Error finding Album";
        Server.Transfer("ErrorPage.aspx");
    }

    HttpContext.Current.Response.ContentType = "application/json";
    HttpContext.Current.Response.Write(TheJson);

}
...