无论位置元素如何,未经身份验证的用户都无法访问ASP.NET MVC中的静态文件

fli*_*ubt 4 authorization web-config telerik visual-studio-2010 asp.net-mvc-2

我知道这个问题曾多次被问过,但这些答案都没有在我的情况下发挥作用.我有一个ASP.NET MVC2应用程序,它在我的本地IIS 7.5(7600.16385)上以集成模式运行的AppPool上使用Forms身份验证.有趣的是,使用VS 2010附带的开发Web服务器时不会发生这种情况.我的web.config文件包含no <authorization />和no <location />元素.当我点击主页时,除了存储在~/Content目录中的.CSS和.PNG文件之外,我在登录视图中获取所有内容.当我直接使用http://localhost/WebSubscribers/Content/Site.css请求.CSS文件时,我被重定向到登录页面.看起来像一个通配符映射尝试授权每个请求,即使我允许使用该请求<location path="Content" /> 如下所示:

<location path="Content" >
 <system.web>
  <authorization>
   <allow users="*"/>
  </authorization>
 </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

我在Stack Overflow上找到的大多数答案建议只添加这样一个位置元素来解决问题,但这对我不起作用,所以我删除了它.

我在IIS中没有创建通配符映射,只是为了确保,我删除了站点并重新创建它指向同一目录,只是为了得到相同的结果.可以在IIS以外的任何地方指定通配符映射吗?我的web.config文件可以"获取"某种通配符映射吗?我使用Telerik MVC控件,它们似乎对web.config文件进行了一些更改(注册命名空间,httpHandlers,模块).

还有其他建议吗?

更新:当使用Chrome浏览网站而未经过身份验证时,"资源"开发人员工具会对我的Site.css文件说明以下内容:"Site.css:-1Resource解释为样式表,但使用MIME类型text/html进行传输."

这样的哑剧类型会在哪里设置?IIS中的站点节点显示".css | text/css | Inherited".

fli*_*ubt 10

我在IIS中找到了我的问题的原因和解决方案.Web应用程序在我的Visual Studio Projects目录中运行在IIS中,因此我将其配置为使用在我的用户帐户下运行的AppPool.在IIS中,匿名身份验证功能已配置为特定用户:IUSR.我不知道为什么或如何.当我将其更改回应用程序池标识时,未经身份验证的用户可以访问静态文件.

+1给Craig Stuntz指出MVC和IIS 7不需要通配符映射以及位置元素.