[英]Turn off mvc request logging in asp.net core 2.2 with serilog
[英]I can't turn off Request Validation for an ASP.NET MVC Controller
我试图通过执行以下操作关闭控制器中所有操作方法的请求验证:
[ValidateInput(false)]
public class MyController : Controller
{
...
我正在使用的参考说这是可能的,并告诉我这样做,但由于某种原因,它不起作用。
如果我通过文本框提交任何html(甚至是简单的<b>标签),我会收到错误消息:
从客户端检测到一个潜在危险的Request.Form值(text = <b>“)。
通过将属性附加到单个方法也无法正常工作。
如何禁用控制器的请求验证?
我在VS2008内置测试服务器。
我在我的机器上测试了它,在类定义和动作方法上,它在两种情况下都适用于我。 您确定您的视图与您的方法/控制器对齐吗? 您是将该属性放在GET方法还是POST方法上?
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult MyAction (int id, string content) {
// ...
}
要使其正常工作,您还需要修改web.config:
<system.web>
<httpRuntime requestValidationMode="2.0"/>
...
</system.web>
Pro ASP.NET MVC框架(p466)说以下应该有效:
public class MyController : Controller
{
public MyController() {
ValidateRequest = false;
}
}
你可以发布你的控制器文件和你的视图文件。
这有效;
MytestController --------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace testapp.Controllers
{
[ValidateInput(false)]
public class MyTestController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
MyTest的(指数)---------------------------------------------- ---------
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Index</title>
</head>
<body>
<% using (Html.BeginForm()) { %>
<%= Html.TextBox("test")%>
<button type="submit" >Submit</button>
<%} %>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.