如何从 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路径的一种方式。
假设您正在执行的工作是在 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"应用程序设置 - 这可能在未来被证明是有用的。