参考库中的ASP.NET相对路径我有一个ASP.NET网站,我从一个xml文件加载了一些验证规则。这个xml文件名没有路径信息,它是硬编码在库中的。(我知道硬编码的名称不好,但让我们在这个例子中使用它)。当我运行站点时,ASP.NET尝试在源路径中查找xml文件,其中包含具有硬编码名称的C#文件。这对我来说是完全难以置信的,因为我无法理解,在运行时,我们甚至将源路径视为解析不合格文件名的可能性。//配置类,在C:tempProject.CoreConfig.cs中publicstaticstringValidationRulesFile{get{returnm_validationRulesFile;}}私有静态字符串m_validationRulesFile="validation_rules.xml";//使用文件名m_validationRules.LoadRulesFromXml(Config.ValidationRulesFile,"Call");这是显示我们在与Config.cs相同的路径中查找的异常:异常详细信息:System.IO.FileNotFoundException:找不到文件“C:tempProject.Corevalidation_rules.xml”。任何人都可以帮我解释一下吗?我已经知道你应该如何处理ASP.NET中的路径,所以请不要回答解决方案。我真的很想了解这一点,因为它真的让我感到惊讶,也让我很困扰。更新这是LoadRulesFromXml的相关代码xmlDoc.Load(in_xmlFileName);...UPDATE2看起来CassiniWeb服务器获取了VS设置的当前目录,实际上它设置为我的库项目的路径。我不确定VS究竟如何确定要用于路径的项目,但这至少解释了发生了什么。谢谢乔。如果您不提供路径,文件访问通常会默认使用当前工作目录。在ASP.NET中,这可能是您的Web应用程序目录。依赖当前工作目录通常不是一个好主意,因此您可以使用Path.Combine指定不同的默认目录,例如与AppDomain.CurrentDomain.BaseDirectory相关的目录,这也是ASP.NET的Web应用程序目录。应用。您应该明确地将路径添加到要打开的文件的名称中。您也可以尝试跟踪您当前的工作目录。从VisualStudio运行Cassini时,当前目录继承VisualStudio的工作目录:这似乎是你的情况。即:publicvoidLoadRulesFromXml(stringin_xmlFileName,stringin_type){//看看发生了什么Debug.WriteLine("Currentdirectoryis"+System.Environment.CurrentDirectory);XmlDocumentxmlDoc=newXmlDocument();//使用显式路径xmlDoc.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,in_xmlFileName));...完全猜测我会说方法LoadRulesFromXml()正在查看托管该站点的应用程序根URL的路径...这可能是C:\temp\Project.Core可能通过执行Server.MapPath(“~”)你能发布LoadRulesFromXML的代码吗,或者你有代码吗?以上为C#学习教程:参考库中ASP.NET相对路径分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
