下面的代码有什么问题吗?

时间:2010-09-25 12:12:20

标签: c#

我正在创建一个从给定服务器读取XML文件的Windows应用程序。此应用程序已安装在约30个客户端中。也许他们会同时调用此函数。

我的问题:

如果有多个用户同时调用此方法,是否会出现问题?

public string GetXmlInnerText()
{  
    FtpWebRequest tmpReq = null;
    System.Net.WebResponse tmpRes = null;
    try
    {
        if (Settings.Default.Internal)
            tmpReq = (FtpWebRequest)FtpWebRequest.Create("ftp://<IPhere>/XMLData.xml");
        else
            tmpReq = (FtpWebRequest)FtpWebRequest.Create("ftp://<IPhere>/XMLData.xml");

        tmpReq.Credentials = new System.Net.NetworkCredential("userName", "password");
        tmpReq.KeepAlive = false;
        tmpRes = tmpReq.GetResponse();

    }
    catch (Exception ex)
    {
        //------
    }


    string fileContents = null;
    using (System.IO.Stream tmpStream = tmpRes.GetResponseStream())
    {
        using (System.IO.TextReader tmpReader = new System.IO.StreamReader(tmpStream))
        {
            fileContents = tmpReader.ReadToEnd();
        }
    }
    return fileContents;
}

感谢

3 个答案:

答案 0 :(得分:3)

一个问题 - 你没有处置WebResponse。它实现了IDisposable,因此您应该使用using语句。使用当前的结构,这不是非常容易 - 您应该考虑适当地重构try / catch块。

此外,StreamReader默认使用UTF-8 - 如果您的XML文档未以UTF-8编码,则可能会出现问题。如果它是XML文档,为什么不通过XmlReader.Create(Stream)或类似的东西加载它?这将为您处理编码。

答案 1 :(得分:2)

我没有看到问题,因为您只是从文件中读取。唯一的问题可能是服务器禁止并发访问用户帐户并限制同时允许的连接数。在这种情况下,使用通过HTTP而不是FTP传递xml的web服务或脚本(例如php)可能会更好。

答案 2 :(得分:1)

如果您想知道多个客户端一次访问FTP服务器,则取决于FTP服务器的设置方式。

有些将被设置为仅允许一次允许2或3个客户端,而有些将允许(几乎)允许您需要的任何数量。

如果FTP服务器出现问题,您可以通过HTTP服务器提供服务。