Asp.net mvc 3 IIS7.5上的MVC3站点-如何使静态内容在会话之外可用?

Asp.net mvc 3 IIS7.5上的MVC3站点-如何使静态内容在会话之外可用?,asp.net-mvc-3,iis-7.5,asp.net-mvc-routing,http-status-code-404,Asp.net Mvc 3,Iis 7.5,Asp.net Mvc Routing,Http Status Code 404,我有一个MVC3站点,静态图像从/Content/images很好地提供给该站点的用户,但是如果我尝试在会话之外访问它们,我会得到一个404 这对于Facebook对话框中使用的图标和小品牌资产来说是个问题,因为当第三方页面引用它们时,它们很自然地会变成404 我在/Content文件夹的web.config中添加了以下内容,但没有添加骰子: <system.web> <authorization> <allow users="*"/> <

我有一个MVC3站点,静态图像从/Content/images很好地提供给该站点的用户,但是如果我尝试在会话之外访问它们,我会得到一个404

这对于Facebook对话框中使用的图标和小品牌资产来说是个问题,因为当第三方页面引用它们时,它们很自然地会变成404

我在/Content文件夹的web.config中添加了以下内容,但没有添加骰子:

<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <handlers>
    <remove name="BlockViewHandler" />
  </handlers>
</system.webServer>

这些只是小文件,虽然我可以将它们放到第三方CDN上,但这会使版本控制更加复杂

我想我可能需要配置IIS以绕过ASP.NET路由,或者创建一个/assets文件夹并添加类似于
routes.IgnoreRoute(“assets/{*pathInfo}”)的内容在Global.asax中

最好的计划


Martyn

这似乎更多的是关于会话代码的问题,而不是关于如何配置IIS的问题。理论上,静态文件托管通过IIS“只起作用”——与动态内容相同。

您考虑过将这些资产放在子域上吗


在过去,我将图像放在不同的域上:images.mydomain.com

可能与So重复,在遵循Chuck的建议后,这是一种很好的间接图像引用的方法,我随后意识到,我们在生产服务器上的过滤器导致了这种行为。啊!嗯,这是一个想法。我可能会看看如何在对站点进行最小更改的情况下做到这一点。@MartynBrearley当我这样做时,我们将映像结构保留在站点内部,但当我们创建IIS应用程序时,我们将映像文件夹映射到images.domain.com地址的根目录。这使您能够灵活地将图像移动到cdn或云上,而不会对站点造成巨大影响。很好。那么,图像是否需要CNAME?我倾向于尽可能地使用simlpest DNS设置,然后将它们放在一边;)我在想一张唱片。如果你使用CNAME,你将回到你现在的问题,除非有活动会话,否则无法获取图像。谢谢Rob,但我不确定我是否完全理解你的答案。我认为问题的症结在于,每个传入的URL都由MVC路由系统处理,该系统正在查找/Controller/Action。默认情况下,如果目标URL上存在物理文件,路由系统将不会路由。