0

XML ファイルをサーバーに保存し、FTP 経由で別のリモートに送信しようとしています。XMLファイルを作成/保存するために、私は使用しています

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

そしてFTPにアップロード。

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

すべて正常に動作します。XML ファイルの作成、フォルダへの保存、FTP への送信が正しく行われます。しかし、コードの展開中に問題が発生しました。ロード バランサーと2 つの製品サーバーがあります。そのため、現時点ではどこに保存されるかわかりません。他のサーバーでは利用できない可能性があるため、404 が返される可能性があります。

XML ファイルを保存するときに、ファイルの場所の前にサーバー名を指定する方法はありますか? 基本的に、既に実装されているコードとともに、共通の場所指定子をホスト名/IPアドレスのように調べたいと思っています。

4

1 に答える 1

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;

他の誰かが同様の状況に遭遇した場合に備えて、ここに投稿してください。

于 2013-04-11T23:19:43.507 に答える