Asp.net mvc 从Web API访问虚拟目录
我有一个需要从.NETWebAPI应用程序和单独的.NETMVC应用程序访问的文件文件夹(表单模板)。这些表单模板的文件夹位于网站之外。理想情况下,我希望能够将路径存储在Web.Config文件中,以便在本地环境中轻松测试应用程序 我尝试在托管站点上设置虚拟目录,但不知道如何在Web API中引用它们。我尝试了几种引用虚拟目录的方法,但都不起作用。大多数帖子建议尝试Server.MapPath(“MyVirtualDirectory”),但它返回“…\wwwroot\MyApiController\Action\MyVirtualDirectory”,而不是虚拟目录的物理路径 我删除了虚拟目录并试图“导航”到正确的路径,但被“无法使用前导..退出顶部目录上方”阻止Asp.net mvc 从Web API访问虚拟目录,asp.net-mvc,iis,asp.net-web-api,Asp.net Mvc,Iis,Asp.net Web Api,我有一个需要从.NETWebAPI应用程序和单独的.NETMVC应用程序访问的文件文件夹(表单模板)。这些表单模板的文件夹位于网站之外。理想情况下,我希望能够将路径存储在Web.Config文件中,以便在本地环境中轻松测试应用程序 我尝试在托管站点上设置虚拟目录,但不知道如何在Web API中引用它们。我尝试了几种引用虚拟目录的方法,但都不起作用。大多数帖子建议尝试Server.MapPath(“MyVirtualDirectory”),但它返回“…\wwwroot\MyApiControlle
那么,在.NETWebAPI应用程序中使用虚拟目录访问资源的正确方法是什么?对于.NET MVC应用程序,同样的方法也适用吗?您需要使用
HostingEnvironment
,例如:
public static string MapPath(string path){
string result;
result = HostingEnvironment.MapPath(path);
return result;
}
此外,HostingEnvironment
还提供了类似于ApplicationPhysicalPath
的功能:
result = HostingEnvironment.ApplicationPhysicalPath + "App_Data\\somefile.xml";
为什么不使用以http开头的绝对url?HostingEnvironment.MapPath(“MyVirtualDirectory”)引发以下错误:此处不允许相对虚拟路径“MyVirtualDirectory”。明白了。我使用了Path.Combine(HostingEnvironment.ApplicationPhysicalPath,“../../MyPhysicalDirectory”),只是需要注意:并非所有托管环境都允许这样做。可能存在权限问题。