如何从 Web 应用程序调用时获取类库的路径

本文关键字:获取 类库 路径 调用 Web 应用程序 | 更新日期: 2023-09-27 17:56:53

我有一个正在读取一些XSLT文件的类库。我正在使用资源,但它们是在 dll 中预编译的,我们希望能够即时更改这些文件,因此我被要求从文件系统中读取它们。

我开始使用相对路径并且单元测试运行良好,但是集成测试失败了,因为在这种情况下,它们正在运行Web应用程序并且路径错误。

代码非常简单,它只是加载 xslt:

string xslFilePath = @"xslts'transformation1.xsl";
XslCompiledTransform transformation = new XslCompiledTransform();
transformation.Load(xslFilePath, new XsltSettings(true, true), new XmlUrlResolver());

集成测试中的错误是:

DirectoryNotFoundException ExceptionMessage - 找不到路径"C:''Program Files''Common Files''Microsoft Shared''DevServer''10.0''xslts''transformation1.xsl'的一部分。

到目前为止,我找到的最接近的解决方案是:

string codeBase = Assembly.GetAssembly(typeof(Class1)).CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string fullPath = Uri.UnescapeDataString(uri.Path);
string theDirectory = Path.GetDirectoryName(fullPath);
string relativePath = @"'xslts'transformation1.xsl";
string path = theDirectory + relativePath;

但它检索了错误的路径,这次是使用该 dll 的 Web 应用程序的路径。我仍在尝试寻找解决方案,它一定是获取dll路径的一种方式。

如何从 Web 应用程序调用时获取类库的路径

假设您正在执行的工作是在 ASP .NET 进程下进行的,您可以使用:

Server.MapPath("'xslts'transformation1.xsl")

这将为您提供文件的物理路径,即

C:''inetpub''wwwroot''mysite''xslts''transformation1.xsl

更多信息可以在这里找到:

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath(v=VS.90).aspx

在这里:

https://web.archive.org/web/20210417074237/http://www.4guysfromrolla.com/webtech/121799-1.shtml

编辑

或者在你的web.config中放置一个"PathToXsl"应用程序设置 - 这可能在未来被证明是有用的。