![](/img/trans.png)
[英]What folder in a vb.net app should you put an html file used exclusively by the vb.net app?
[英]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.