xmltextwrite保存文件 - 指定主机名或服务器名

时间:2013-02-07 02:04:21

标签: asp.net visual-studio-2008 load-balancing ftpwebrequest xmlwriter

我正在尝试将XML文件保存在服务器上并通过FTP将其发送到另一个远程。要创建/保存XML文件,我正在使用

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?基本上我想要一个通用的位置说明符来查看hostname / ipaddress以及已实现的代码。

1 个答案:

答案 0 :(得分: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;

在此处发布,以防其他人遇到类似情况。

相关问题