我已经在 Identity and Access Add-in 页面和 MVC 论坛上发布了这个问题,但目前还没有解决方案,所以我想我会尝试很多。
我有一个问题,如果我将 Identity and Access 添加到 MVC4 项目,对脚本和 css 文件的请求会变得不稳定,并且通常不会由 iisexpress 提供服务。
重现步骤:
创建一个新的 MVC4 项目 - Basic,带有 Razor 引擎
添加一个名为 Home 的控制器 - 只是裸控制器。
为 Home 控制器上的操作索引创建视图索引。使用 _viewStart 中定义的内置布局,因此包括捆绑的 jquery 和 modernizr
为应用程序启用 IISExpress
测试这个应用程序 - 应该可以正常工作。刷新,重新加载等,一切正常。
接下来,使用本地开发 STS 在应用程序上配置 Identity and Access。将所有内容保留为默认值。
再次测试应用程序。您应该看到它通过 localSTS 身份验证,然后请求 Home/Index 操作 - 此时它尝试获取脚本文件但这些请求挂起。页面已交付,但无法呈现,因为标记中的脚本文件阻止它这样做,直到脚本请求超时。
如果您在 chrome 中启动另一个浏览器会话,那么您可以导航到脚本文件,它将在该会话中下载。
这种状态的压缩项目在这里:https ://www.dropbox.com/s/dy2bs5fh70kubp6/MvcApplication3.zip
我使用 fiddler 和 wireshark 来尝试确定正在发生的事情,但似乎对 iisexpress 的请求挂起。我在我的两台机器上都试过这个。一个是 64 位的,另一个不是。VS2012 Professional V 11.0.50727.1 RTMREL,.NET framework 4.5.50709,以我的身份登录,本机管理员,VS以管理员身份运行
有什么想法吗?
编辑:我尝试过的更多事情: - 使用 Azure STS 具有相同的效果。- 删除默认情况下的标签意味着脚本文件都是可访问的,似乎所有时间都需要,但 Thread.CurrentPrincipal.Identity 是通用身份 - 即用户未经过身份验证。将 [Authorize] 属性添加到我的 BaseController 然后强制使用 STS 进行身份验证,就像使用 web.config 指令一样,然后脚本和 css 文件也存在相同的问题。我有点希望这可能会起作用,因为它只删除了从项目根目录到控制器的任何身份验证,但是,唉,没有乐趣。