我正在努力让我的公司转向ASP.NET MVC并远离传统的ASP。我已经编写了一些示例应用程序作为概念验证,但是当我尝试将这些mvc应用程序部署到我公司的IIS7服务器时,我遇到了问题。
我的系统管理员说ASP.NET MVC中有一些东西阻止他将UNC路径指定为服务器到站点文件夹的物理路径。这对我来说听起来很荒谬,因为(据我所知)MVC框架对这个设置没有任何影响......我写的代码也没有。
底线是:如果我的任何mvc应用程序要用于客户端,则必须使用UNC物理路径在服务器上运行。目前,当服务器具有非UNC路径时,mvc应用程序将工作...只是没有UNC路径。
浏览器中显示的错误显示:
安全例外
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
Stack跟踪显示:
[SecurityException:请求类型'System.Web.AspNetHostingPermission,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。]
System.Reflection.Assembly._GetType(String name,Boolean throwOnError,Boolean ignoreCase)+0
System.Reflection.Assembly.GetType(String name,Boolean throwOnError,Boolean ignoreCase)+42
System.Web.UI.Util.GetTypeFromAssemblies(ICollection程序集,String typeName,Boolean ignoreCase)+145
System.Web.UI.TemplateParser.GetType(String typeName,Boolean ignoreCase,Boolean throwOnError)+73
System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName,String codeFileBaseTypeName,String src,Assembly assembly)+111
System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)+279
答案 0 :(得分:4)
.NET需要在UNC路径上运行一些额外的帮助。通常,这源于不“信任”远程计算机。这是一篇KB文章,描述了IIS中的一个这样的错误。
在IIS .NET UNC路径上进行Google搜索。你可以找到比我们任何人发布更多关于它为什么你必须更改配置,为什么你必须设置权限等等的帖子。不,你没有错误的MVC捣毁路径,它一般是.NET需要帮助的路径。当您运行经典ASP(基于脚本)时,您没有遇到任何这些问题。
答案 1 :(得分:0)
嗯,我不太确定,但我知道asp.net需要一个有效的UNC路径(没有\无论什么\ C $而不是\ whatever \ share)在使用像file.exist这样的函数时。与往常一样,您需要确保您的工作进程帐户具有对指定路径的正确读/写访问权限。最后,您应该使用一些常规故障排除来查看它是否不仅仅是有问题的mvc应用程序。
最后一件事,不要使用MapPath。给定相对地址时,它返回一个绝对地址。