Asp.net web api OWIN WEB API自主机解析文件夹路径

Asp.net web api OWIN WEB API自主机解析文件夹路径,asp.net-web-api,owin,Asp.net Web Api,Owin,表单位于ApiController中。我需要读取项目中嵌入的文件内容。但我无法找到正确的路径 [HttpPost] public HttpResponseMessage DoSomething() { String content = System.IO.File.ReadAllText(@"~\SomeFolder\file.txt"); } 这样做,解析路径指向: C:…\bin\Debug\~\SomeFolder\file.txt 而不是 C:…\SomeFolder\file

表单位于ApiController中。我需要读取项目中嵌入的文件内容。但我无法找到正确的路径

[HttpPost]
public HttpResponseMessage DoSomething()
{
    String content = System.IO.File.ReadAllText(@"~\SomeFolder\file.txt");
}
这样做,解析路径指向:

C:…\bin\Debug\~\SomeFolder\file.txt

而不是

C:…\SomeFolder\file.txt


有人知道如何在OWIN下解决这个问题吗?

通常,尝试访问项目中的文件是没有意义的。部署所需的所有文件(DLL、资产、TXT等)都应复制到单独的文件夹中,以便在需要部署时只需复制该文件夹

您应该将文件设置为“复制到输出”,然后尝试:

String content = System.IO.File.ReadAllText(@"SomeFolder\file.txt");
决定

C:...\bin\Debug\SomeFolder\file.txt

要使代码与OWIN一起工作,您可以查看以下答案。它建议在自宿主场景中使用并退回到手动操作文件路径。

通常,尝试访问项目中的文件是没有意义的。部署所需的所有文件(DLL、资产、TXT等)都应复制到单独的文件夹中,以便在需要部署时只需复制该文件夹

您应该将文件设置为“复制到输出”,然后尝试:

String content = System.IO.File.ReadAllText(@"SomeFolder\file.txt");
决定

C:...\bin\Debug\SomeFolder\file.txt

要使代码与OWIN一起工作,您可以查看以下答案。它建议在自宿主场景中使用并退回到手动操作文件路径。

我正在尝试发送一封html格式的电子邮件,因此我需要以某种方式获取html模板并替换所需的部分。我本来会使用Server.MapPath(“~/SendMail.htm”),但在Owin self host下,我没有此选项您知道的任何其他选项?@Gavello:Owin不会在IIS中运行,因此
Server.MapPath
应该不可能。如果您在IIS中托管owin,或许可以尝试:。如果在console主机和IIS主机中使文件与根目录相关,则此答案中的解决方案也应该有效。我正在尝试发送html格式的电子邮件,因此我需要以某种方式获取html模板并替换所需的部分。我本来会使用Server.MapPath(“~/SendMail.htm”),但在Owin self host下,我没有此选项您知道的任何其他选项?@Gavello:Owin不会在IIS中运行,因此
Server.MapPath
应该不可能。如果您在IIS中托管owin,或许可以尝试:。如果在console主机和IIS主机中使文件相对于根目录,则此答案中的解决方案也应该有效。