簡體   English   中英

將VB.net aspx Web應用程序中的XML文件保存到文件夾

[英]Saving XML file in VB.net aspx web app to a folder

我正在尋找以下問題的解決方案:我有一個aspx / vb Web應用程序。 用戶可以創建一些存儲在XML文件中的自定義內容。 我正在通過回發創建,更新和保存XML到應用程序中的文件夾(不是App_Data,因為我使用JavaScript讀取了xml文件)。 當然,這可以在我的機器上進行測試,但是在服務器上進行測試時,出現寫入權限錯誤。 我搜索了。 有關文件夾權限的大多數答案都是關於嘗試授予Web應用程序本地寫權限。 類似於我的幾個問題表明,允許Web應用程序寫入除App_Data以外的文件夾是一個安全問題。 但是,這對我不起作用,因為我需要JS才能讀取文件。 如果我必須做回發只是為了從App_Data中讀取xml,我將有大約5個回發來進行選擇(用戶通過從幾個下拉列表中進行選擇來過濾課程文檔)。

基本上,我是否可以允許VB應用程序將XML文件寫入服務器上的Web應用程序文件夾,以便JS可以讀取XML文件? 順便說一下,只有經過身份驗證的用戶才能訪問該Web應用程序。

另一個選擇是將xml文件保存在數據庫中,然后在加載時將xml寫入隱藏的div,然后使用JS從那里讀取。 我不喜歡該選項,因為其中一些xml文件會隨着時間的推移而變大。 任何指導都會有所幫助。 謝謝

從技術上講,您可以設置權限,以便可以寫入文件夾,但這不是最安全的選項,因此我不建議這樣做。

我將使用通用處理程序(ashx文件)來代替存儲在App_Data中的XML文件的內容。 然后,您可以通過在處理程序上的querystring參數傳遞它們的名稱或ID來請求各個fies,例如: 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM