Javascript 将VB.net aspx web app中的XML文件保存到文件夹

Javascript 将VB.net aspx web app中的XML文件保存到文件夹,javascript,asp.net,xml,vb.net,Javascript,Asp.net,Xml,Vb.net,我正在寻找以下问题的解决方案: 我有一个aspx/vb web应用程序。用户可以创建一些存储在XML文件中的自定义内容。我通过回发到应用程序中的文件夹创建、更新和保存XML(不是应用程序数据,因为我使用javascript读取XML文件)。当然,在我的机器上进行测试时,这很好,但是在服务器上进行实时测试时,会出现“I get write permission”错误。我到处找了找。关于文件夹权限的大多数答案都是关于尝试授予web应用程序本地写入权限。与我类似的几个问题表明,允许web应用程序写入a

我正在寻找以下问题的解决方案: 我有一个aspx/vb web应用程序。用户可以创建一些存储在XML文件中的自定义内容。我通过回发到应用程序中的文件夹创建、更新和保存XML(不是应用程序数据,因为我使用javascript读取XML文件)。当然,在我的机器上进行测试时,这很好,但是在服务器上进行实时测试时,会出现“I get write permission”错误。我到处找了找。关于文件夹权限的大多数答案都是关于尝试授予web应用程序本地写入权限。与我类似的几个问题表明,允许web应用程序写入app_数据以外的文件夹是一个安全问题。但是,这对我不起作用,因为我需要JS来读取文件。如果我必须回发一篇文章来读取App_数据中的xml,我将有大约5篇文章来进行选择(用户通过从几个下拉列表中选择来过滤课程文档)

基本上,我可以允许VB应用程序将XML文件写入服务器上的web应用程序文件夹,以便JS可以读取XML文件吗?顺便说一下,只有经过身份验证的用户才能访问web应用程序


另一个选项是将xml文件保存在DB中,然后在加载时将xml写入一个隐藏的div,并使用JS从那里读取。我不喜欢这个选项,因为随着时间的推移,这些xml文件中的一些可能会变得很大。任何指导都会有帮助。谢谢

从技术上讲,您可以设置权限以便写入文件夹,但这不是最安全的选项,我不推荐使用

我将使用一个通用处理程序(ashx文件)来处理存储在App_数据中的XML文件的内容。然后,您可以通过处理程序上的querystring参数(例如:
http://localhost/xmlhandler.ashx?name=myxmlfile

下面是VB.NET中的一个处理程序示例,该处理程序将为App_Data/XMLFolder/中的XML提供服务:

Imports System.Web
Imports System.Web.Services
Imports System.IO

Public Class XMLHandler
    Implements System.Web.IHttpHandler

    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

        context.Response.ContentType = "text/xml"
        context.Response.Write(ReadXMLFile())

    End Sub

    Private Function ReadXMLFile() As String
        Try
            Using sr As New StreamReader(HttpContext.Current.Server.MapPath("~/App_Data/XMLFolder/" & HttpContext.Current.Request.QueryString("name") & ".xml"))
                Dim line As String
                line = sr.ReadToEnd()
                Return line
            End Using
        Catch e As Exception
            Return "The xml file could not be read."
        End Try
    End Function

    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

我明白了。问题是我的javascript如何读取xml文件。JS无法在App_数据文件夹中读取。为了防止大量回发,我需要使用JS Xpath从xml文件中提取所需的数据。您的javascript将从处理程序中读取,而不是尝试直接访问App_data文件夹中的xml文件。如果将此处理程序文件放在应用程序的根目录中,则JS代码需要获取“h”ttp://yourdomainhere/xmlhandler.ashx?name=myxmlfile,其中“myxmlfile”是存储在“~/App_Data/XMLFolder/”文件夹中的xml文件的名称。在某种程度上,这个处理程序是javascript和app_数据文件夹中的文件之间的中间人。啊,对不起,这是一个非常新的问题。因此,上面的代码是aspx.vb页面的一部分。是否需要首字母签名或加载任何内容。我想我只是不知道它叫什么。加载?否,您需要在Visual Studio中创建一个类型为Generic Handler(文件扩展名.ashx)的新文件,并按原样将上述所有代码放入其中。WORKS!我必须使用.ajax来获取xml文件。它将其作为字符串返回——不确定xpath是否对字符串有效,但我想我可以转换字符串。我会明白的,最大的障碍已经过去了