访问剃刀视图被拒绝

时间:2012-01-09 21:08:32

标签: asp.net-mvc-3 razor azure

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

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

我没有任何重现此步骤的步骤。我发现修复它的唯一方法就是遵循以下步骤:

  1. 从受影响的页面复制标记。
  2. 删除文件
  3. 创建名称略有不同的新视图
  4. 将标记粘贴到新文件
  5. 重建
  6. 将文件重命名为旧名称
  7. 我在网站运行时查看了IIS管理器,看来受影响的文件存在并且与其他未受影响的文件具有相同的权限。

    是什么给出的?

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

    异常看起来像这样......

      

    System.UnauthorizedAccessException:访问路径   'C:\用户\布雷特\软件\工作\干线\ Project.Web \查看\作业\ _Assignment.cshtml'   被拒绝。

         

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

         

    System.UnauthorizedAccessException:访问路径   'C:\用户\布雷特\软件\工作\干线\ Project.Web \查看\作业\ _Assignment.cshtml'   被拒绝。在System.IO .__ Error.WinIOError(Int32 errorCode,String   maybeFullPath)at System.IO.FileStream.Init(String path,FileMode   模式,FileAccess访问,Int32权限,布尔useRights,FileShare   share,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES   secAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath)
      在System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess   访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串   System.IO.FileStream..ctor中的msgPath,Boolean bFromProxy(String   路径,FileMode模式,FileAccess访问,FileShare共享)at   System.Web.Hosting.MapPathBasedVirtualFile.Open()at   System.Web.Compilation.BuildProvider.OpenReader(VirtualPath   virtualPath)at   System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode()
      在System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType()   在   System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider   buildProvider)

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

1 个答案:

答案 0 :(得分:2)

如果您从本地IIS而不是VS开发人员服务器上运行应用程序。

您需要确保IIS_IUSRS具有read& amp;对文件执行权限。