gpt4 book ai didi

c# - XElement.Load ("~/App_Data/file.xml") 找不到路径的一部分

转载 作者:太空狗 更新时间:2023-10-30 00:12:41 34 4
gpt4 key购买 nike

我是 LINQtoXML 的新手。我想使用 XElement.Load("") 方法。但是编译器找不到我的文件。你能帮我为我的 XML 文件写正确的路径吗?请注意:我在 App_Code 中定义了一个类,我想在其中一种方法中使用 XML 文件数据,而我的 XML 文件位于 App_Data 中。

settings = XElement.Load("App_Data/AppSettings.xml");

我无法使用 Request.ApplicationPathPage.MapPath()Server.MapPath() 获取文件的物理路径因为我不在类 Inherited form Page 类中。

简要错误信息:
找不到路径“C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\App_Data\AppSettings.xml”的一部分
< br/>你看编译出来的路径和我的项目路径完全不一样(G:\MyProjects\ASP.net Projects\VistaComputer\Website\App_Data\AppSettings.xml)

完整的错误信息在这里:

System.IO.DirectoryNotFoundException was unhandled by user code
Message="Could not find a part of the path 'C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\App_Data\\AppSettings.xml'."
Source="mscorlib"
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings)
at System.Xml.Linq.XElement.Load(String uri, LoadOptions options)
at System.Xml.Linq.XElement.Load(String uri)
at ProductActions.Add(Int32 catId, String title, String price, String website, String shortDesc, String fullDesc, Boolean active, Boolean editorPick, String fileName, Stream image) in g:\MyProjects\ASP.net Projects\VistaComputer\Website\App_Code\ProductActions.cs:line 67
at CMS_Products_Operations.Button1_Click(Object sender, EventArgs e) in g:\MyProjects\ASP.net Projects\VistaComputer\Website\CMS\Products\Operations.aspx.cs:line 72
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:

最佳答案

你可以试试 HostingEnvironment.ApplicationPhysicalPath静态属性(假设这是在 ASP.NET 应用程序中使用的):

string filePath = Path.Combine(
HostingEnvironment.ApplicationPhysicalPath,
@"App_Data\AppSettings.xml"
);

我不同,恕我直言,更好的方法是编写一个可重用的函数,它将文件名作为参数,并在一天结束时从某些 WebForm 调用,您可以在其中访问 Server.MapPath。这样做的好处是该函数不再依赖于 ASP.NET 引擎,并且可以在文件名计算方式不同的其他应用程序中重复使用。所以基本上把关注点分开:

  1. 计算文件名位置
  2. 将文件名传递给对其进行一些解析的函数

关于c# - XElement.Load ("~/App_Data/file.xml") 找不到路径的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063614/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com