WebRequest与FileWebRequest

问题描述 投票:2回答:1

我正在阅读Microsoft考试70-483“用C#编程”的示例考题。

有一个问题,我不明白,在互联网上找不到任何关于这个主题的答案。

问题是:

您正在实现一个名为ProcessFile的方法,该方法从Web服务器和FTP服务器检索数据文件。 ProcessFile()方法具有以下方法签名: Public void ProcessFile(Guid dataField,string dataFileUri) 每次调用ProcessFile()方法时,它都必须检索唯一的数据文件,然后将数据文件保存到磁盘。 您需要完成ProcessFile()方法的实现。您应该使用哪个代码段?

FileWebRequest request = FileWebRequest.Create(dataFileUri) as FileWebRequest;
using (FileWebResponse response = request.GetResponse() as FileWebResponse)
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
using (StreamWriter writer = new StreamWriter(dataFieldId + ".dat"))
{
    writer.Write(reader.ReadToEnd());
}

-要么-

WebRequest request = WebRequest.Create(dataFileUri);
using (WebResponse response = request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
using (StreamWriter writer = new StreamWriter(dataFieldId + ".dat"))
{
    writer.Write(reader.ReadToEnd());
}

根据提问人的说法,后一个片段,使用“WebRequest”是正确的。但我无法弄清楚为什么“FileWebRequest”不是。 请记住,我所做的问题在过去经常出错,所以也许这也不正确?

c# webrequest
1个回答
2
投票

几个小时前我也遇到过这个问题。早期我没有使用此功能,但通过在Google搜索信息,我得出以下结论:

  • 有问题的主要词是来自网络服务器和FTP服务器, 这意味着dataFileUri可能像http://mywebserverftp://myftpserver
  • 当您尝试从ftp服务器获取文件时,例如: //from answer var request1 = WebRequest.Create("ftp://myftpserver"); //from answer var request2 = FileWebRequest.Create("ftp://myftpserver") as FileWebRequest; var request3 = WebRequest.Create("ftp://myftpserver") as FtpWebRequest; request1,request3将具有类型SystemNet.FtpWebRequest的请求值。 request2将为null。 当您尝试使用http://mywebserver时,类似的行为是:request2,request3将为null。
  • 当您使用WebRequest时,传输协议将自动检测请求的类型 所以你不需要考虑文件是否存储在web服务器/文件服务器/ ftp服务器上
© www.soinside.com 2019 - 2024. All rights reserved.