.net 是否以编程方式访问~/Content目录?

.net 是否以编程方式访问~/Content目录?,.net,asp.net-mvc,.net,Asp.net Mvc,我怀疑这个问题的措词可能有误(我已经有一段时间没有在微软的空间里做过任何事情了),但还是这样 本质上,我试图通过编程方式访问带有~/Content目录的XML文档。我试着按照……的思路来做这件事 XElement resourceConfigXML = XElement.Load(@"~/Content/resource_configuration.xml"); …但是这显然是不正确的,因为字符串没有被转换成操作系统能够理解的路径。因此,是否有任何方法可以在运行时导出此目录的物理路径 顺便说一

我怀疑这个问题的措词可能有误(我已经有一段时间没有在微软的空间里做过任何事情了),但还是这样

本质上,我试图通过编程方式访问带有~/Content目录的XML文档。我试着按照……的思路来做这件事

XElement resourceConfigXML = XElement.Load(@"~/Content/resource_configuration.xml");
…但是这显然是不正确的,因为字符串没有被转换成操作系统能够理解的路径。因此,是否有任何方法可以在运行时导出此目录的物理路径


顺便说一句,如果这是一个注定要失败的幼稚想法/对内容目录的用途的一个奇怪的误解,请随时告诉我–为我辩护,我只会使用.NET(感谢MVC的味道)。

尝试使用
Server.MapPath

XElement resourceConfigXML = XElement.Load(Server.MapPath(@"~/Content/resource_configuration.xml"));  

尝试使用
Server.MapPath

XElement resourceConfigXML = XElement.Load(Server.MapPath(@"~/Content/resource_configuration.xml"));  

您要将此更改为:

XElement.Load(Server.MapPath("~/Content/file.xml"))

您要将此更改为:

XElement.Load(Server.MapPath("~/Content/file.xml"))

如果要引用域而不是计算机路径,请使用另一种方法

XElement.Load(VirtualPathUtility.ToAbsolute("~/Content/file.xml"));

如果要引用域而不是计算机路径,请使用另一种方法

XElement.Load(VirtualPathUtility.ToAbsolute("~/Content/file.xml"));

这是对内容目录的一种“怪诞”(你的话)误解。任何可以猜测url的客户端都可以调用此文件。如果它包含用户不应该看到的信息,情况尤其如此。如果是配置信息,请将其与扩展名为.config的web.config一起放入根目录中(IIS不允许客户端访问.config文件)。如果本质上有更多数据,那么将其放入APP_data文件夹中。您可以保留.xml-客户端也无法访问此文件夹。将内容用于用户应该访问的图像、css和其他非aspx文件。@Michael-感谢您的反馈-我也这么怀疑,因此非常感谢您的反馈。应用程序_数据是::-)在一个类似的问题中得到了很好的解决:@Mouffette感谢您的提醒-对于一个更一般的问题,App-Helper路线看起来是一个简洁的解决方案,但知道这一点很好。这是对内容目录的一个“怪诞”(你的话)误解。任何可以猜测url的客户端都可以调用此文件。如果它包含用户不应该看到的信息,情况尤其如此。如果是配置信息,请将其与扩展名为.config的web.config一起放入根目录中(IIS不允许客户端访问.config文件)。如果本质上有更多数据,那么将其放入APP_data文件夹中。您可以保留.xml-客户端也无法访问此文件夹。将内容用于用户应该访问的图像、css和其他非aspx文件。@Michael-感谢您的反馈-我也这么怀疑,因此非常感谢您的反馈。应用程序_数据是::-)在一个类似的问题中得到了很好的解决:@Mouffette感谢您的提醒-对于一个更一般的问题,App-Helper路线看起来是一个简洁的解决方案,但是很高兴知道。