此刻我正在放大脑屁。我有一组由.NET网站中的类库读入的文件。问题是文件在三个不同的站点中使用(所有站点都引用了类库),所以我不想复制这三个文件。我想要做的是在类库中有一个文件夹作为共享资源,如下所示:
ClassLib
\Templates
-file1.xml
-file2.pdf
-MyClass.cs
让MyClass从Templates目录中读取文件。很简单,除了从页面调用MyClass.cs之外,我们称之为Default.aspx。现在,MyClass.cs的代码如下:
IList<string> files = GetTemplateFiles(); // returns the path to the template files e.g. Templates/file1.xml
foreach (string file in files) {
if (File.Exists(file)) {
// do things here...
}
}
File.Exists总是假的,似乎是因为它正在查看默认目录而不是ClassLib的路径(类似于C:\Projects\Shared\MyLib\
)。现在,我无法使用AppDomain.CurrentDomain.BaseDirectory
,因为这会因调用它的网站而异;模板应该始终可以从类库中的Templates目录中获得,而不是调用应用程序。 Assembly.GetExecutingAssembly()
中的属性似乎也没有多大帮助,指向ASP.NET临时文件。
基本上我的问题是处理这个问题的最佳方法是什么。模板文件应该是每个应用程序可用的共享资源(而不是复制/粘贴到每个应用程序中的三个模板/目录中),但我不知道哪个应用程序会在给定时间调用它,所以我需要避免使用编码模板文件夹的文件路径。我错过了一些关于我如何检索模板文件的小而重要的内容,但我无法弄清楚到底是什么。
答案 0 :(得分:1)
确定可用于所有三个站点的公共共享路径,并在web.config文件中定义该路径,确保IIS能够访问该共享文件夹。