Asp.net mvc MVC忽略文件中的参数
您的服务器中有一个静态文件,在本例中是一个映像 此文件在Microsoft OWA中使用。如果由于某种原因outlook无法获取该文件,它将使用重试计数重试 OWA在请求中添加了一个参数,所以它会尝试使用如下url 不幸的是,OWA添加了Asp.net mvc MVC忽略文件中的参数,asp.net-mvc,asp.net-mvc-4,iis,Asp.net Mvc,Asp.net Mvc 4,Iis,您的服务器中有一个静态文件,在本例中是一个映像 此文件在Microsoft OWA中使用。如果由于某种原因outlook无法获取该文件,它将使用重试计数重试 OWA在请求中添加了一个参数,所以它会尝试使用如下url 不幸的是,OWA添加了&retryCount=,而不是?retryCount=,因为这使MVC成为一个不同的文件,用户收到404 所以。。有没有办法忽略静态文件/图像的附加参数?我认为有两种方法可以解决您的问题 在所有文件名的末尾加上“?”,使其成为signature-bound
&retryCount=
,而不是?retryCount=
,因为这使MVC成为一个不同的文件,用户收到404
所以。。有没有办法忽略静态文件/图像的附加参数?我认为有两种方法可以解决您的问题
问题是,由于您的查询字符串格式不正确,在ASP.NET(或MVC)甚至有机会干预之前,IIS都会阻塞它 通常,MVC根本不处理静态内容,最好是出于性能原因将该任务留给IIS。解决此问题的最简单方法是使用确保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))&(.+?)$"/>
<action type="Rewrite" appendQueryString="false" url="{R:1}?{R:2}"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
基本上,上面查找的是前面提到的任何扩展,后面紧跟着一个符号和任何其他文本(可能是查询字符串)。仅在这种情况下,它将捕获URL路径(包括扩展名)和查询字符串(忽略符号)。然后,在将URL传递给其处理程序之前,它使用问号而不是符号重新构建URL
请注意,正则表达式将忽略正确指定的查询字符串,因此该规则仅适用于格式错误的查询字符串。我不确定它是否解决了问题,因为我没有使用OWA的经验 您是否可以尝试在所有图像的末尾添加一个熔渣查询字符串,如: 我希望随后的请求如下所示:
在这种情况下,它应该可以解决您的问题。您能在结尾添加问号吗,如“.png?”我更喜欢一个通用的解决方案,所有图像都包含在内容中,而不是针对每个图像。@RicardoPolo您可以对任何文件类型执行此操作。..pdf、png、jpg、csv等。我的意思是您的解决方案针对一个文件。我想要一个适用于内容文件夹中每个文件的解决方案。我不想更改文件名,而是为每个文件创建一个路由。