說明: 請求驗證過程檢測到有潛在危險的用戶端輸入值,對請求的處理已經中止。該值可能訓示存在危及應用程式安全的嘗試,如跨站點腳本攻擊。若要允許頁面重寫應用程式請求驗證設定,請将 httpRuntime 配置節中的 requestValidationMode 特性設定為requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" / >。設定此值後,可通過在 Page 指令或 <pages > 配置節中設定 validateRequest="false" 禁用請求驗證。但是,在這種情況下,強烈建議應用程式顯式檢查所有輸入。有關更多資訊,請參見http://go.microsoft.com/fwlink/?LinkId=153133。
原以為就像普通的Asp.net頁面一樣,在頭部的Page中加入ValidateRequest="false"就行了,誰知問題還是存在。弄了一個上午,問題終于解決,将解決方法彙總如下:
1,在出現該錯誤的頁面頭部的page中加入ValidateRequest="false",那麼該頁面的任何一次Post送出都不會再驗證送出内容的安全性。
如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Manage/ViewMasterPageEdit.Master" Inherits="System.Web.Mvc.ViewPage<MvcWebPhoto.Models.Entities.Article >"
ValidateRequest="false" % >
2,在web.config中的pages節中配置validateRequest="false",如:
<system.web >
<pages validateRequest="false" ></pages >
</system.web >
但這樣,整個項目中的所有Form請求都不再驗證送出内容的安全性,極不提倡這種做法。
3,如果你使用的是.Net 3.5,MVC 2.0及更高的版本,那麼可以在處理Post方法的Action添加一個特性:[ValidateInput(false)],這樣處理就更加有針對性,提高頁面的安全性。
[HttpPost]
[ValidateInput(false)]
public ActionResult CatalogEdit(Catalog model)
{
return View();
}
重要:
如果你使用的是MVC 3.0,那麼你會發現做了以上的設定後還是無效。這是因為你還需要在web.config中做以下設定:
<httpRuntime requestValidationMode="2.0" / >
注意:在MVC項目中,Views檔案夾下與主項目下,都會有一個web.config檔案。Views下的web.config檔案隻對Views檔案夾下面的檔案有效。如果你要處理的頁面不在Views下面,那麼<httpRuntime requestValidationMode="2.0" / >一定要設定在主項目下的web.config中才有用。
本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/p/6244208.html,如需轉載請自行聯系原作者