我有一个ASP.NET网站,其中我从xml文件中加载一些验证规则。这个xml文件名没有路径信息,在一个库中硬编码。(我知道硬编码的名称不好,但让我们在这个例子中继续使用它)。
当我运行网站时,ASP.NET试图在源路径中找到xml文件,即硬编码名称所在的C#文件所在的路径。这完全让我无法理解,因为我无法想象在运行时,我们甚至考虑将源路径作为解析未限定文件名的可能性。
当我运行网站时,ASP.NET试图在源路径中找到xml文件,即硬编码名称所在的C#文件所在的路径。这完全让我无法理解,因为我无法想象在运行时,我们甚至考虑将源路径作为解析未限定文件名的可能性。
// the config class, in C:\temp\Project.Core\Config.cs
public static string ValidationRulesFile {
get { return m_validationRulesFile; }
} private static string m_validationRulesFile = "validation_rules.xml";
// using the file name
m_validationRules.LoadRulesFromXml( Config.ValidationRulesFile, "Call" );
这里是异常信息,显示我们查找的路径与 Config.cs 相同:
Exception Details: System.IO.FileNotFoundException:
Could not find file 'C:\temp\Project.Core\validation_rules.xml'.
有人可以向我解释一下吗?我已经知道在ASP.NET中通常应该如何处理路径,所以请不要提供解决方案。我只是真的想了解这个问题,因为它真的让我很惊讶,并且会一直困扰着我。
更新
这是LoadRulesFromXml的相关代码:
public void LoadRulesFromXml( string in_xmlFileName, string in_type )
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load( in_xmlFileName );
...
更新2
看起来Cassini web服务器的当前目录是由VS设置的,确实设置为我的库项目的路径。我不确定VS如何确定要使用哪个项目的路径,但至少解释了正在发生的事情。谢谢Joe。