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; 

张贴在这里万一有人遇到类似的情况。

相关问题