2012-02-09 93 views
0

我有一个页面的方法:捕捉的Json POST例外

[WebMethod(false)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string AMethod(string someString) 
{...} 

当我把它通过Json POST,并传递一个无效的字符串,如:“ 我收到以下错误:

{"Message":"Invalid object passed in, \u0027:\u0027 or \u0027}\u0027 expected. (22): [{\u0027someString\u0027: \u00272\u0027\u0027}]","StackTrace":" 

我希望在服务器端(C#)捕获此异常并且不会将其显示给客户端,但是在到达此方法之前会发生此错误。

我在哪里可以发现此异常?

回答

0

看起来你传递的是无效位的数据。

[{'someString': \u00272''}] 

我不确定unicode unicode 00272是什么,但它可能不应该在那里。

它看起来像\ u00272是无效的,所以你可能会发送您的数据

[{'someString': '2''}]

,因为你需要躲避“(这应该是通过使用做是无效的一个JSON.stringify方法)。如果你没有使用JSON.stringify,它可能不会发送JSON给方法 - 使用Fiddler检查,但它可能只是张贴data?like=this

+0

thanx的答复,但正如我所说的,我传递一个无效的字符串的目的,我从外部应用程序而不是从我自己的JavaScript。我试图找出的唯一的东西是我可以在哪里捕捉到这个异常。 – Atlanta 2012-02-09 12:37:29

0

我已经成功地捕获这个异常,在web.config中:

<system.web> 
    <customErrors mode="On" defaultRedirect="Home.aspx"> 
     <error statusCode="500" redirect="Home.aspx"/> 
    </customErrors> 
</system.web> 

它解决了我的问题,虽然它可能不是最好的解决办法