我可以在哪里存储 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
<body onload="MakePhoneOBJ('@path');">
</body>
【问题讨论】:
您是根据请求生成phones.xml文件,还是存储在App_data中的真实文件?另外,我认为将文件存储在 App_data 文件夹中不是一个好主意。您尝试过其他位置吗? @EvgenyGorb 您是否根据请求生成phones.xml 文件?是的,但是在我启动 IIS 后,该文件确实显示在 App_Data 中。您是否尝试过其他位置?是的,我尝试创建一个 ~/Temp/phones.xml,但它仍然没有提供任何数据,即 404 错误 您是否尝试过使用浏览器直接获取该文件?只需在浏览器的地址栏中输入:<your site name>/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 读取的主要内容,如果未能解决你的问题,请参考以下文章