日期:2014-05-17  浏览次数:20480 次

.net MVC上运用FckEditor检测到有潜在危险的 Request.Form
引用页面: <%= Html.FckEditor("Content", this.Model.Content ?? string.Empty, new FckConfig() { Height = "450px", Width = "100%" })%>

 网上说的几种方法1: <%@ Page validateRequest="false" .......
  2: <system.web>
  <pages
  validateRequest="false"........
都试过了,完全没用....几天了依然解决不了些问题,求助..........感激涕零

出错:从客户端(Content="<p>z</p>")中检测到有潜在危险的 Request.Form 值。 
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。 

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(Content="<p>z</p>")中检测到有潜在危险的 Request.Form 值。

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

堆栈跟踪: 


[HttpRequestValidationException (0x80004005): 从客户端(Content="<p>z</p>")中检测到有潜在危险的 Request.Form 值。]
  System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +8723434
  System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +111
  System.Web.HttpRequest.get_Form() +129
  System.Web.HttpRequestWrapper.get_Form() +11
  System.Web.Mvc.ValueProviderDictionary.PopulateDictionary() +145
  System.Web.Mvc.ValueProviderDictionary..ctor(ControllerContext controllerContext) +74
  System.Web.Mvc.ControllerBase.get_ValueProvider() +31
  System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +53
  System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +109
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +399
  System.Web.Mvc.Controller.ExecuteCore() +126
  System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +27
  System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7
  System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +151
  System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +57
  System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

 


------解决方案--------------------
[ValidateInput(false)]
public ActionResult DemoView()
{

return View();
}

public ControllerDemoController()
{
this.ValidateRequest = false;
}

------解决方案--------------------
把获取到的内容 string body= txtBody.Text.Replace("'", "''");
就好了 ,这是编辑器的一个BUG
------解决方案--------------------
探讨
在.aspx文件中加入validateRequest="false",形如:

<%@ PagevalidateRequest="false" language="c#" Codebehind="WriteNews.aspx.cs" AutoEventWireup="false" Inherits="News.WriteNews&quo