0

我試圖將XML文件保存在服務器上並通過FTP將其發送給另一個遠程服務器。要創建/保存XML文件,我正在使用xmltextwrite保存文件 - 指定主機名或服務器名稱

XmlWriter writer = XmlWriter.Create("d:\\path\\to\\folder\\filename.xml"); 

並上傳到FTP。

FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(filename);

,一切工作正常。它創建XML文件,保存到文件夾,正確發送到FTP。但是現在我在部署代碼時遇到了麻煩。 我們有一個負載平衡器和兩個prod服務器。所以我不能確定此刻它會保存在哪裏。並且由於它可能無法在其他服務器上使用,所以我可能會獲得404.

有沒有一種方法可以在保存XML文件時在文件位置之前指定servername?基本上我想要一個通用的位置說明符來查看主機名/ ipaddress以及已經實現的代碼。

回答

1

我以不同的方式解決了這個問題。我找不到一個共同的位置,所以我試圖消除這個需要本身的一個共同的位置。

我使用了MemoryStream對象,並將我的XML文件存儲在內存中,而不是物理服務器,並從那裏發送。這樣就不需要保存到本地路徑。更多示例代碼如下。

StringBuilder builder = new StringBuilder() ;     
    XmlWriterSettings settings = new XmlWriterSettings(); 
    settings.Encoding = Encoding.UTF8; 
    settings.Indent = true; 
    using (XmlWriter writer = XmlWriter.Create(builder, settings)) 
     {      
      writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\""); 
      writer.WriteStartElement("mainElem"); 
      writer.WriteStartElement("elem"); 
      writer.WriteElementString("var1", "data"); 
      writer.WriteElementString("var2", "data"); 
      writer.WriteEndElement(); 
      writer.WriteEndElement(); 
      writer.WriteEndDocument(); 
      writer.Flush(); 
      writer.Close(); 
     } 
byte[] a = System.Text.Encoding.UTF8.GetBytes(builder.ToString()); 
MemoryStream stream = new MemoryStream(a); 
return stream; 

張貼在這裏萬一有人遇到類似的情況。

相關問題