gpt4 book ai didi

asp.net-mvc - MVC 忽略文件中的参数

转载 作者:行者123 更新时间:2023-12-04 03:00:42 24 4
gpt4 key购买 nike

您的服务器中有一个静态文件,在我们的例子中是一个图像 https://signtul.com/content/img/signature-boundary-08972bce-d646-483d-a436-d8ceea7ab034.png

该文件在 Microsoft OWA 内部使用。如果由于某种原因 Outlook 无法获取文件,它会使用重试计数再次尝试。

OWA 在请求中添加了一个参数,因此它尝试使用这样的 url

https://signtul.com/content/img/signature-boundary-08972bce-d646-483d-a436-d8ceea7ab034.png&retrycount=2

不幸的是,OWA 添加了 &retryCount= 而不是 ?retryCount=,因为这使得 MVC 成为不同的文件,并且用户会收到 404。

那么..有什么方法可以忽略静态文件/图像的附加参数吗?

最佳答案

问题是,由于您的查询字符串格式错误,在 ASP.NET(或 MVC)有机会干预之前,IIS 就会被它阻塞。

通常,MVC 根本不处理静态内容,出于性能原因,最好将该任务留给 IIS。解决此问题的最简单方法是使用 IIS rewrite module以确保 URL 被重写为可用的 URL(带有 ?)。您可以非常轻松地制定一条规则来处理多种文件类型。以下示例适用于 .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))&amp;(.+?)$"/>
<action type="Rewrite" appendQueryString="false" url="{R:1}?{R:2}"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

基本上,上面的代码查找任何上述扩展名,后跟一个&符号和任何其他文本(大概是查询字符串)。仅在这种情况下,它才会捕获包含扩展名的 URL 路径和查询字符串(忽略 & 符号)。然后,它使用问号而不是 & 符号重建 URL,然后将其传递给其处理程序。

请注意,正则表达式将忽略正确指定的查询字符串,因此该规则仅适用于格式错误的查询字符串。

关于asp.net-mvc - MVC 忽略文件中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com