正在从类库中的文件夹中读取文件

本文关键字:文件夹 读取 文件 类库 | 更新日期: 2023-09-27 18:00:06

我现在脑子里有个屁。我有一组文件,这些文件是由.NET网站中的类库读入的。问题是这些文件在三个不同的站点中使用(所有站点都引用类库),所以我不想在这三个站点中复制这些文件。我想做的是在类库中有一个文件夹作为共享资源,类似这样:

ClassLib
  'Templates
    -file1.xml
    -file2.pdf
  -MyClass.cs 

并让MyClass从Templates目录中读取文件。很简单,除了MyClass.cs是从页面调用之外,我们称之为Default.aspx

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总是false,似乎是因为它在默认目录中查找,而不是ClassLib(类似于C:'Projects'Shared'MyLib')的路径。现在,我不能使用AppDomain.CurrentDomain.BaseDirectory,因为这取决于调用它的网站;模板应始终可从类库的templates目录中获得,而不是从调用应用程序中获得。Assembly.GetExecutingAssembly()中的属性似乎也没有多大帮助,它们指向ASP.NET临时文件。

基本上,我的问题是处理这个问题的最佳方法是什么。模板文件应该是每个应用程序可用的共享资源(而不是复制/粘贴到每个应用程序中的三个Templates/目录中),但我不知道哪个应用程序会在给定的时间调用它,所以我需要避免对模板文件夹的文件路径进行硬编码。在我尝试检索模板文件的过程中,我遗漏了一些小但关键的东西,但我不知道具体是什么。

正在从类库中的文件夹中读取文件

确定一个可用于所有三个站点的通用共享路径,并在web.config文件中定义该路径,确保IIS能够访问该共享文件夹。