【问题标题】:xmltextwrite save file - specify hostname or servernamexmltextwrite 保存文件 - 指定主机名或服务器名
【发布时间】:2013-02-07 02:04:20
【问题描述】:

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

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

并上传到 FTP。

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

一切正常。它创建 XML 文件,保存到文件夹,正确发送到 FTP。但是现在我在部署代码时遇到了麻烦。 我们有一个负载平衡器和两个产品服务器。所以我现在不能确定它会保存在哪里。由于它可能在其他服务器上不可用,我可能会得到 404。

当我保存 XML 文件时,有没有办法可以在文件位置之前指定服务器名?基本上我想要一个通用的位置说明符来查看主机名/IP地址以及已经实现的代码。

【问题讨论】:

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


    【解决方案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;
    

    张贴在这里,以防其他人遇到类似情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多