asp.net-mvc-3 – 拒绝访问剃刀视图

在我的MVC3项目的最后几个月里,我在剃刀视图上得到一个随机访问被拒绝的错误.在大多数情况下,我没有对视图进行过一次更改,在最近的情况下,MVC项目也没有改变.

mvc应用程序托管在Azure中,只有在开发结构中运行时才会发生访问被拒绝错误.如果我要发布到云,则可以访问这些页面.

我没有任何重现这个的步骤.我发现修复它的唯一方法是按照以下步骤操作:

>从受影响的页面复制标记.
>删除文件
>创建名称略有不同的新视图
>将标记粘贴到新文件中
>重建
>将文件重命名为旧名称

当网站运行时,我查看了IIS管理器,看来受影响的文件存在并且与其他未受影响的文件具有相同的权限.

是什么赋予了?

更新:我刚刚在同一个解决方案中遇到了与WCF服务(.svc)相同的问题(不同于MVC项目的项目).这次重新创建文件技巧不起作用.我检查了subversion中的代码到一个新的工作目录,现在它再次工作.这必须是IIS或Azure计算模拟器的东西.

这个例外看起来像……

System.UnauthorizedAccessException: Access to the path
‘C:\Users\Brett\App\Working\trunk\Project.Web\Views\Assignments\_Assignment.cshtml’
is denied.

Generated: Mon, 09 Jan 2012 20:55:00 GMT

System.UnauthorizedAccessException: Access to the path
‘C:\Users\Brett\App\Working\trunk\Project.Web\Views\Assignments\_Assignment.cshtml’
is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String
maybeFullPath) at System.IO.FileStream.Init(String path, FileMode
mode, FileAccess access, Int32 rights, Boolean useRights, FileShare
share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES
secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess
access, FileShare share, Int32 bufferSize, FileOptions options, String
msgPath, Boolean bFromProxy) at System.IO.FileStream..ctor(String
path, FileMode mode, FileAccess access, FileShare share) at
System.Web.Hosting.MapPathBasedVirtualFile.Open() at
System.Web.Compilation.BuildProvider.OpenReader(VirtualPath
virtualPath) at
System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode()
at System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType()
at
System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider
buildProvider)

我截断了堆栈跟踪,它非常大.如果有人想要休息,我可以提供.

最佳答案 如果您从本地IIS而不是VS开发人员服务器运行您的应用程序.

您需要确保IIS_IUSRS具有读取和读取功能.对文件执行权限.

点赞