我有一个加载外部文件的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
答案 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
用户是否有权访问您正在阅读或写入的路径。