我的公司正在使用IIS和Visual Studio 2015创建一个新网站。它由3个解决方案组成。前端(网站),后端(webapi)和BL(businesslogic)。
BL是我们创建的.dll,用于在我们的后端和数据库之间来回传递数据,以及执行其他一些功能。 BL也可以构建为控制台应用程序(我通常使用它来代码运行测试)。
我在BL中的一个函数需要打开一个HTML文件(这是唯一需要执行此操作的函数。此解决方案中没有其他函数需要打开文件......)
var sr = File.OpenText(“myFile.html”)
//用sr做什么
住在垃圾箱里面
Z:\ ... \ BIN \调试\ myFile.html
当我将BL作为控制台应用程序运行时,这很好用。但是,当我将它构建为.dll并在我的后端解决方案中引用.dll时,除非将其放在一个特定的文件夹中,否则无法找到该文件。
C:\ Program Files(x86)\ IIS Express
我花了大约3个小时试图让它从我的解决方案或其他文件夹中的某个地方打开该文件,但不管我做什么它只会看到IIS Express文件夹,这看起来像一个不直观的地方说得好,但是我非常接近说要搞砸它并转向更重要的事情而不是一个愚蠢的HTML生活。我认为这可能是一个非常简单的答案,如果有人能够指出,我将非常感激。
答案 0 :(得分:2)
您指定的文件路径仅包含文件名而不是完整路径。 File.OpenText
中指定的路径相对于当前工作目录,如此MSDN article
调试时,将dll复制到bin文件夹中,以便成为工作文件夹。当您将其部署在IIS Express文件夹中时,它就是工作文件夹。
如果您希望文件存在,则输入绝对路径或相对于当前工作目录的目录。
string path = @"c:\temp\myFile.html";
var sr = File.OpenText(path);
或
string path = @"~/relativefolder/somewhere/myFile.html";
var sr = File.OpenText(path);