Ric*_*olo 2 iis asp.net-mvc asp.net-mvc-4
您的服务器中有一个静态文件,在我们的例子中是一个图像 https://signtul.com/content/img/signature-boundary-08972bce-d646-483d-a436-d8ceea7ab034.png
此文件在Microsoft OWA中使用.如果由于某种原因outlook无法获取文件,则会再次尝试使用重试计数.
OWA在请求中添加了一个参数,所以它尝试使用这样的URL
它不幸的OWA增加了&retryCount=,而不是?retryCount=,因为这使得MVC的东西它是一个不同的文件,用户接收404.
那么..任何方式忽略静态文件/图像的附加参数?
问题是,由于您的查询字符串格式不正确,IIS会在ASP.NET(或MVC)甚至有机会进行干预之前阻塞它.
通常,MVC根本不处理静态内容,最好是出于性能原因将该任务留给IIS.解决此问题的最简单方法是使用IIS重写模块来确保将URL重写为可用的URL(带有a ?).您可以制定单个规则来轻松处理多种文件类型.下面的例子将工作的.png,.jpg,.gif,.js,和.css文件-根据需要为您的要求,您可以添加其他的扩展.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rewrite static content with URL querystring starting with &">
<match url="^(.+?(?:\.png|\.jpg|\.gif|\.js|\.css))&(.+?)$"/>
<action type="Rewrite" appendQueryString="false" url="{R:1}?{R:2}"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
基本上,上面查找任何上述扩展,紧接着是&符号和任何其他文本(可能是查询字符串).仅在这种情况下,它将捕获包括扩展名和查询字符串的URL路径(忽略&符号).然后,在将URL传递给其处理程序之前,使用问号而不是&符号重建URL.
请注意,正则表达式将忽略正确指定的查询字符串,因此该规则仅适用于格式错误的查询字符串.