我可以在哪里存储 XML 文件供浏览器使用 ASP.Net MCV 读取

Posted

技术标签:

【中文标题】我可以在哪里存储 XML 文件供浏览器使用 ASP.Net MCV 读取【英文标题】:Where can I store an XML file for the browser to read using ASP.Net MCV 【发布时间】:2021-05-10 01:00:44 【问题描述】:

我想在我的网站上有一个 xml 文件,其中包含来自数据库的临时信息。当我使用 VSCode 这样做时,它工作得很好;但是当我使用我实际的 ASP.Net Web 应用程序时,它没有。我认为它与我正在使用的文件路径有关,任何帮助将不胜感激!

ASP.Net C#

string path = Server.MapPath("~/App_Data/phones.xml");
foreach (var pm in Model)

     // add each model to xml

JS

const MakePhoneOBJ = (xmlFile) => 
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () 
        if (this.readyState == 4 && this.status == 200) 
            xmlFunc(this);
        
    ;
    xmlhttp.open("GET", xmlFile, true);
    xmlhttp.send();


const xmlFunc = (xml) => 
    var xmlDoc = xml.responseXML;
    var root = xmlDoc.getElementsByTagName("Element");
    for (let i = 0; i < root.length; i++) 
        // Do something with the file contents
    

html

<body onload="MakePhoneOBJ('@path');">
</body>

【问题讨论】:

您是根据请求生成phones.xml文件,还是存储在App_data中的真实文件?另外,我认为将文件存储在 App_data 文件夹中不是一个好主意。您尝试过其他位置吗? @EvgenyGorb 您是否根据请求生成phones.xml 文件?是的,但是在我启动 IIS 后,该文件确实显示在 App_Data 中。您是否尝试过其他位置?是的,我尝试创建一个 ~/Temp/phones.xml,但它仍然没有提供任何数据,即 404 错误 您是否尝试过使用浏览器直接获取该文件?只需在浏览器的地址栏中输入:&lt;your site name&gt;/Temp/phones.xml。它返回什么? @EvgenyGorb using ~/Temp/phones.xml 实际上确实调出了我的 xml 文档,而使用 ~/App_Data/phones.xml 却没有,显示 404 页面。我想这意味着我需要使用 App_Data 以外的另一个文件夹。它仍然没有解释为什么 js 不能请求路径,即使我使用 'Temp' 使用jquery向服务器发送请求怎么样?另外,您是否比较了您和您的 js 发送的请求(在浏览器中按 F12 并导航到“网络”选项卡)?这两个地址是否相同? 【参考方案1】:

问题是我使用的路径:'~/App_Data/phones.xml'。相反,我创建了一个临时文件夹并使用了该路径

string path = (Request.Url.GetLeftPart(UriPartial.Authority) + "/Temp/phones.xml";

并使用 razor 将其传递到我的 js 函数中。

【讨论】:

以上是关于我可以在哪里存储 XML 文件供浏览器使用 ASP.Net MCV 读取的主要内容,如果未能解决你的问题,请参考以下文章

我应该在哪里保存客户端的 JWT 以供将来请求?

odoo 在哪里解析 xml 文件以将它们存储在数据库中?

XML -> XSL -> HTML 编辑文件,并在没有 asp 的情况下保存 xml 中的更改

日志文件与数据库在哪里保存用户活动数据以供分析?

OAuth 2.0 在哪里安全地存储访问令牌以供长期使用

在哪里能找到供学生练习用的数据库