2012-02-09 97 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> 

它解決了我的問題,雖然它可能不是最好的解決辦法