2013-07-30 50 views
0

我有一個MVC項目,其中一個篩選器檢查來自請求參數的參數。如何禁用HttpRequestBase上的HttpRequestValidation?

request.Params["Username"] 

但是,如果請求包含非法字符,則params屬性會拋出HttpRequestValidationException異常。

所以我必須趕上這個異常,然後訪問工作正常的params屬性。

如何禁用驗證這個請求是作爲HttpRequestBase到達輔助類的?我不想在全球範圍內爲每一個請求做這件事,就在它進入這個班時。

回答

1

作爲@ Jon-S的評論,UnvalidatedRequestValues是如何繞過單個值的驗證。在這個例子中,它會是:

request.Unvalidated["Username"] 
0

沒有看到更多的代碼,我不能確定,但​​聽起來好像你可以把請求放在try-catch中。

try 
{ 
    ... 
    request.Params["Username"] 
    ... 
} 
catch (HttpRequestValidationException ex) 
{ 
    //your error handling goes here. 
} 
+0

感謝您的回答,並歡迎來到StackOverflow!這個問題表明,他們已經在捕捉和處理異常 - 他們詢問的是每個處理器的方式來完全禁用驗證,在框架中。你知道這樣的事嗎? – Ben

+2

我明白你的意思了。我想你可以使用UnvalidatedRequestValues類來完成你正在尋找的東西。您可以在表單或每個項目上使用它。這裏有更多的信息。 http://msdn.microsoft.com/en-us/library/system.web.unvalidatedrequestvalues(v=vs.110).aspx 希望能回答你的問題! –