您的服务器中有一个静态文件,在我们的例子中是一个图像 https://signtul.com/content/img/signature-boundary-08972bce-d646-483d-a436-d8ceea7ab034.png
此文件在Microsoft OWA中使用。如果出于某种原因,Outlook无法获取文件,则会使用重试计数再次尝试。
OWA在请求中添加了一个参数,所以它尝试使用这样的网址
不幸的是,OWA添加了&retryCount=
而不是?retryCount=
,因为这会使MVC内容成为另一个文件而用户会收到404.
那么..有什么方法可以忽略静态文件/图像的附加参数吗?
答案 0 :(得分:5)
问题在于,由于您的查询字符串格式不正确,因此IIS会在ASP.NET(或MVC)甚至有机会进行干预之前阻塞它。
通常,MVC根本不处理静态内容,最好是出于性能原因将该任务留给IIS。解决此问题的最简单方法是使用IIS rewrite module确保将URL重写为可用的URL(?
)。您可以制定单个规则来轻松处理多种文件类型。以下示例适用于.png
,.jpg
,.gif
,.js
和.css
文件 - 您可以根据需要添加其他扩展名。< / p>
<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>
基本上,上面的内容会查找上面提到的任何扩展,紧接着是&符号和任何其他文本(可能是查询字符串)。仅在这种情况下,它将捕获包括扩展名和查询字符串的URL路径(忽略&符号)。然后,在将URL传递给其处理程序之前,使用问号而不是&符号重建URL。
请注意,正则表达式将忽略正确指定的查询字符串,因此该规则仅适用于格式错误的查询字符串。
答案 1 :(得分:0)
我看到你问题的两个解决方案
使用&#34;?&#34;附加所有文件名最后是签名边界-08972bce-d646-483d-a436-d8ceea7ab034.png?
我会创建路线来捕捉所有&#34; / content / img / signature-boundary - *&#34;并获取输入参数作为字符串,因为你希望是png或任何其他文件名,你可以写一些所有垃圾的清理。当我从搜索引擎获得大量错误参数时,我实际上遇到了类似的问题(因为我的情况下无效的共享内容是#的东西)所以这是一个可能的修复,因为我无法控制此输入
< / LI> 醇>答案 2 :(得分:0)
我不确定它是否解决了问题,因为我没有使用OWA的经验。
你可以尝试在所有图像的末尾添加一个slag querystring,如:
https://signtul.com/content/img/signature-boundary-08972bce-d646-483d-a436-d8ceea7ab034.png?x=0
我希望随后的请求看起来像:
在这种情况下,它应该可以解决您的问题。