gpt4 book ai didi

asp.net-mvc - 将 IISLocal(适用于 IISExpression)与 ASP.NET MVC 一起使用时出现奇怪的异常

转载 作者:行者123 更新时间:2023-12-03 01:28:05 27 4
gpt4 key购买 nike

我正在开发一个使用 KendoUI 的 ASP.NET MVC 5 应用程序。如果我在 IIS Express 下运行该项目,一切正常...如果我使用 IIS Local,当我尝试加载 View 时会出现以下异常

System.Web.dll 中第一次出现“System.Web.HttpException”类型的异常

Additional information: Invalid file name for file monitoring: 'C:\svn\Projects\xxx\trunk\xxx\Views\Shared\EditorTemplates'. Common reasons      for failure include:

- The filename is not a valid Win32 file name.

- The filename is not an absolute path.

- The filename contains wildcard characters.

- The file specified is a directory.

- Access denied.

我刚刚在谷歌上搜索,有人建议在“调试”->“异常”下禁用“抛出异常”复选框,但如果我这样做,我将不会显示 View ,因为输出只是 javascript...

有人找到解决这个问题的方法了吗?谢谢

最佳答案

您可以尝试的一些事情:

目录访问

检查并确保您的 'C:\svn\Projects\xxx\trunk\xxx\Views\Shared\EditorTemplates' 目录可供应用程序使用。

首先,确定 IIS 应用程序池分配给该应用程序的用户帐户。

  1. 打开 Internet 信息服务 (IIS) 管理器。
  2. 展开服务器名称。
  3. 展开 Sites
  4. 点击包含相关网站的节点。
  5. 点击右侧 Pane 中的 Basic Settings... 链接。
  6. 记下右上角框中的应用程序池名称,然后点击 Cancel
  7. 点击左侧 Pane 中的 Application Pools 节点。
  8. 找到具有第 6 步中的名称的应用程序池,然后检查“身份”字段中的值。

现在,身份可以是内置帐户(例如 NetworkService、LocalSystem、LocalService 或 ApplicationPoolIdentity),也可以是本地或域用户(如果您使用的是 Active Directory)。

如果是本地或域用户,只需在Windows资源管理器中打开'C:\svn\Projects\xxx\trunk\xxx\Views\Shared\EditorTemplates'目录,右键单击它,然后选择属性。单击“安全”选项卡,并确保该用户位于列表中。如果没有,请单击 Edit... ,然后单击 Add... ,并将用户添加到列表中。确保它有足够的权限来读取该目录。

如果使用内置用户,您可以将其切换为本地用户,或者查看 this answer 以获取向内置帐户添加权限的命令。

模板名称参数

特别要检查的一件事是所有 View (或您可能碰巧调用它的其他任何地方)中 templateName@Html.Editor()@Html.EditorFor() 参数。此参数应与 here 格式之一相对应。

最常见的用法是仅指定模板的名称。例如,如果您为此字段指定 MyTemplate ,它将在多个目录中搜索该文件(请参阅上述文档),以 ~/Views/Shared/EditorTemplates/MyTemplate.<extension> 结尾,其中扩展名将为 .cshtml.vbhtml.aspx.ascx 。这是错误消息中的目录,因此您应该彻底检查这些引用。

即使您没有显式指定参数,MVC 也会使用文件名与您的 View 模型名称相匹配的约定。

文件格式

这是一个不太可能的情况,因为您的应用程序在 IIS Express 下运行,所以情况不应该如此。但是您可以尝试搜索以查看应用程序中是否有任何代码指定 'C:\svn\Projects\xxx\trunk\xxx\Views\Shared\EditorTemplates' 目录中的文件。

如果是这样,请确保文件名

  • 不包含无效的 Windows 文件名字符。
  • 是绝对路径,或者正在调用Environment.MapPath或Server.MapPath解析为绝对路径。
  • 不包含 ?或*。
  • 没有指定文件名所在的目录。

清除临时 ASP.NET 文件

我找到了一个潜在的答案here

您可以尝试清除与当前应用程序相关的 ASP.NET 临时文件。请注意,根据您的框架版本和位数,它们可能潜伏在几个不同的地方。

  • <Drive>:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
  • <Drive>:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
  • <Drive>:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files
  • <Drive>:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

如果您在 Visual Studio 中打开了该项目,它不会让您删除相关文件。最终,您应该在删除文件之前关闭 Visual Studio,但我发现在第一次尝试时将其保持打开状态是确定哪个文件夹包含相关应用程序的好方法,因为您将收到一条消息,表明文件已被锁定。如果您遇到其他问题,了解该位置会很有用。

关于asp.net-mvc - 将 IISLocal(适用于 IISExpression)与 ASP.NET MVC 一起使用时出现奇怪的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com