Динамические XML-файлы с использованием Ashx - PullRequest
0 голосов
/ 29 марта 2011

У меня проблема с попыткой получить filePath файла XML с помощью веб-элемента управления XML. Файл XML хранится в другом каталоге, и я использую файл Ashx для его обслуживания. Ashx-файл работает, добавляя имя XML-файла в конец строки.

Dim oXML As New System.Web.UI.WebControls.Xml
oXML.DocumentSource = Server.MapPath("xmlHandler.ashx") & "?xml=sampleXMLfile.xml"
oXML.TransformSource = Server.MapPath("xmlStyles.xslt")
oXML.DataBind()

Мне кажется, это не работает, и мне было интересно, единственный ли способ - вставить XML в код?

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 29 марта 2011

MapPath сопоставляет путь HTTP / виртуальный путь с физической папкой: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

Таким образом, результат c:\file\on\disk\etc\xmlHandler.ashx?xml=sampleXMLfile.xml не имеет смысла: это не локальное имя файла.

Если вы хотите загрузить этот URL, взгляните на класс WebClient: http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.80).aspx

... затем установите DocumentSource на XmlDocument, загруженный из полученных загруженных данных,или строка, или локальный путь к файлу, согласно http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.xml.documentsource(v=vs.80).aspx (Как вы можете видеть, вы не можете установить DocumentSource в качестве URL-адреса - это не значит, что вы в любом случае предоставляете действительный URL-адрес!)

0 голосов
/ 30 марта 2011

Проблема заключалась в том, что я пытался создать сторону просмотра XML для пользователя, пока один из разработчиков создавал файловую систему для выталкивания и извлечения файлов XML из отдельного каталога.Он настроил файл Ashx для предварительного просмотра XML;однако это усложнило мою работу и заставило меня задать свой вопрос здесь.

Чтобы решить эту проблему, я просто обошел файл ashx и использовал содержащийся в нем код, чтобы вывести xml на строку и связать его с веб-контролем Xml.

Dim fRead = New IO.FileStream(filePath, IO.FileMode.Open)
Dim sReader = New IO.StreamReader(fRead)
xmlString = sReader.ReadToEnd()
fRead.Close()
sReader.Close()

Dim oXML As New System.Web.UI.WebControls.Xml
oXML.DocumentContent = xmlString 
oXML.TransformSource = Server.MapPath("getTSP.xslt")
oXML.DataBind()
Panel1.Controls.Add(oXML)

Еще раз спасибо за вашу помощь.

...