忽略来自Asp.net Mvc应用程序的最小的GIF图像持有者请求

时间:2016-03-13 10:53:33

标签: asp.net asp.net-mvc image

我正在使用asp.net mvc应用程序进行演示项目。我正在为我的网站使用图像延迟加载插件。 (Blazy.js)

我为图像放了一个图像夹。它是“tiny image gif”作为图像源的base64 细节在这里; 有史以来最小的GIF
http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever

但是当我看到日志时,有很多错误,比如;

http://www.domain.com/data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

{
  "Depth": 0,
  "ClassName": "System.Web.HttpException",
  "Message": "A potentially dangerous Request.Path value was detected from the client (:).",
  "Source": "System.Web",
  "StackTraceString": "   at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()\r\n   at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)",
  "RemoteStackTraceString": null,
  "RemoteStackIndex": 0,
  "ExceptionMethod": {
    "Name": "ValidateInputIfRequiredByConfig",
    "AssemblyName": "System.Web",
    "AssemblyVersion": "4.0.0.0",
    "AssemblyCulture": "",
    "ClassName": "System.Web.HttpRequest",
    "Signature": "Void ValidateInputIfRequiredByConfig()",
    "MemberType": 8
  },
  "HResult": -2147467259,
  "HelpURL": null
}

所以,我的问题是:如何阻止/忽略来自mvc方面的这些请求?
也许在mvc routeconfig上配置?或者有更好的方法来解决这个错误吗?

1 个答案:

答案 0 :(得分:0)

您可以通过调整requestValidationMode属性来更改此行为。在4.0及更高版本的框架中,它已更改为验证所有请求。在2.0版本中,它只验证了文档中的页面:

  

RequestValidationMode属性指定要使用的ASP.NET方法   验证将被使用。这可以是用于的算法   早于版本4的ASP.NET版本或版本   在.NET Framework 4中使用。该属性可以设置为以下内容   值:

     
      
  • 4.5(默认值)。在此模式下,值会被延迟加载,也就是说,在请求它们之前不会读取它们。
  •   
  • 4.0 HttpRequest对象在内部设置一个标志,指示每当有HTTP请求时都应触发请求验证   访问数据。这保证了请求验证   在访问cookie和URL之类的数据之前触发   请求。中的元素(如果有)的请求验证设置   配置文件或单个页面中的指令是   忽略。
  •   
  • 2.0。仅对页面启用请求验证,而不是对所有HTTP请求启用。另外,元素的请求验证设置   (如果有的话)在配置文件或指令中   单个页面用于确定要验证的页面请求。
  •   

要将其更改回2.0版,您可以在web.config中执行以下操作。

<httpRuntime requestValidationMode="2.0"/>

如果仍有问题,您可能还需要调整requestPathInvalidCharacters属性。