2010-10-12 125 views
1

我有一个ASP.NET项目,我目前正在处理。有一个C#文件(dbedit.cs),用于直接访问和编辑2个XML数据库文件。我如何创建dbedit.cs的XML文件的相对路径(都在同一目录中)?它必须是可移植的,所以它不能被硬编码。dbedit.cs也可以从同一解决方案中的两个其他项目访问,所以dbedit.cs的组装路径根据哪个项目访问它是不同的。ASP.NET相对路径

这不会为工作的原因所在:

任何帮助将不胜感激。

回答

2

您可以使用类似HttpContext.Current.Server.MapPath的东西。但这需要成为一个网络项目。

[编辑] 以下是文档的MapPath:http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

+0

这不起作用,因为dbedit.cs是一个普通的C#文件,所以没有HttpContext的,可以在它被调用。它可以被几个aspx页面访问,以及一个用作GUI前端编辑XML文件的窗体。 – jnevelson 2010-10-12 22:30:12

+0

你也可以通过gui来访问它,那么这就是一个问题。因为当它从一个aspx访问时,即使它是一个常规的C#文件,HttpContext仍然可用。我可能会通过检查它是否是一个Web应用程序来解决这个问题,然后调用上面的代码,否则得到程序集工作目录而不是用相对路径(谷歌它)来进行协调。就像'if(HttpContext.Current == null)return Path.Combine(Path.GetDirectoryName(Assembly.GetAssembly(typeof(MyClass))。CodeBase),relativePath);否则返回HttpContext.Current.Server.MapPath(relativePath);'。虽然没有尝试过。 – Alxandr 2010-10-12 22:35:59