2012-01-09 67 views
4

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

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

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

  1. 从受影响的页面复制标记。
  2. 删除文件
  3. 一个稍微不同的名称创建一个新视图
  4. 粘贴标记为新的文件
  5. 重建
  6. 重命名文件的旧名称

我已经通过IIS看着经理在网站正在运行时,似乎受影响的文件存在,并具有与其他未受影响的文件相同的权限。

什么给?

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

唯一的例外是这样的......

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

生成:星期一,2012 01月09日20:55:00 GMT

System.UnauthorizedAccessException:对路径 “C:\用户\布雷特\软件\工作\干线\ Project.Web \查看\ Assignments \ _Assignment.cshtml' 被拒绝。 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,字符串MSGPATH,布尔bFromProxy,布尔useLongPath)
在System.IO.FileStream..ctor(字符串路径,的FileMode模式,FileAccess的 访问,文件共享份额,缓冲区大小的Int32,FileOptions选项,字符串 MSGPATH,布尔bFromProxy)在System.IO.FileStream..ctor(字符串 路径,FileMode模式,FileAccess访问,FileShare共享) System.Web.Hosting.MapPathBasedVirtualFile.Open()at System.We b.Compilation.BuildProvider.OpenReader(VirtualPath virtualPath)at System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode()
at System.Web.WebPages.Razor.RazorBuildProvider。get_CodeCompilerType() 在 System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)

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

+0

你的AssignmentsController是什么样的?或者任何控制器使用这个页面,并使其崩溃? – 2012-01-09 21:47:39

+0

您是通过IIS访问本地版本还是仅点击运行按钮,最终访问http://127.0.0.1:81/ – BritishDeveloper 2012-01-10 10:33:34

+0

我通过在Azure开发结构中托管的端点访问它。 – BZink 2012-01-10 14:59:29

回答

2

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

您需要确保您具有IIS_IUSRS读取文件的执行权限&。