如何在不明确定义路径的情况下加载外部数据文件

时间:2011-03-27 18:23:03

标签: c# asp.net relative-path

我有一个加载外部文件的C#程序集。该程序集由asp.net网站使用。 以下是加载数据文件的代码

string dataDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"data");
filePath = Path.Combine(dataDirectory,_fileName);

该组件在Windows应用程序中运行良好,但是当我尝试在asp.net网站中使用它时,它失败,因为该站点无法找到数据文件,并且它给了我以下错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\cmictranslatorsite\20a8eddd\864b2575\assembly\dl3\5bd4a35e\8c6f79b6_98eccb01\data\file.txt

1 个答案:

答案 0 :(得分:1)

您需要使用Server.MapPath来解析ASP.NET应用程序中的相对物理路径。

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)正在返回C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\cmictranslatorsite\20a8eddd\864b2575\assembly\dl3\5bd4a35e\8c6f79b6_98eccb01\,这是您复制和执行应用程序文件的正确位置。

如果您想在IIS中使用相对于虚拟目录的目录,可以使用Server.MapPath来获取路径。如果您的data路径不相关,则.config文件是存储此路径的位置。在任何一种情况下,请检查app pool identity或您的authenticated用户是否有权访问您正在阅读或写入的路径。