Tôi gặp phải vấn đề tương tự mặc dù tôi đã thêm [System.Web.Mvc.AllowHtml]
vào thuộc tính liên quan như được mô tả trong một số câu trả lời.
Trong trường hợp của tôi, tôi có một UnhandledExceptionFilter
lớp truy cập đối tượng Yêu cầu trước khi xác thực MVC diễn ra (và do đó AllowHtml không có hiệu lực) và quyền truy cập này tăng a [HttpRequestValidationException] A potentially dangerous Request.Form value was detected from the client
.
Điều này có nghĩa là, việc truy cập các thuộc tính nhất định của một đối tượng Yêu cầu sẽ ngầm kích hoạt xác thực (trong trường hợp của tôi là Params
).
Một giải pháp để ngăn chặn xác thực được ghi lại trên MSDN
Để tắt xác thực yêu cầu cho một trường cụ thể trong yêu cầu (ví dụ: đối với phần tử đầu vào hoặc giá trị chuỗi truy vấn), hãy gọi phương thức Request.Unvalidated khi bạn nhận được mục, như được hiển thị trong ví dụ sau
Do đó, nếu bạn có mã như thế này
var lParams = aRequestContext.HttpContext.Request.Params;
if (lParams.Count > 0)
{
...
thay đổi nó thành
var lUnvalidatedRequest = aRequestContext.HttpContext.Request.Unvalidated;
var lForm = lUnvalidatedRequest.Form;
if (lForm.Count > 0)
{
...
hoặc chỉ sử dụng thuộc Form
tính dường như không kích hoạt xác thực
var lForm = aRequestContext.HttpContext.Request.Form;
if (lForm.Count > 0)
{
...