string url = "http://www.example.com/feed.xml";
var settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
settings.XmlResolver = null;
settings.DtdProcessing = DtdProcessing.Parse;
settings.CheckCharacters = false;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 900000;
request.KeepAlive = true;
request.IfModifiedSince = lastModified;
var response = (HttpWebResponse)request.GetResponse();
Stream stream;
stream = response.GetResponseStream();
stream.ReadTimeout = 600000;
var xmlReader = XmlReader.Create(stream, settings);
while (!xmlReader.EOF)
{
...
当我尝试在一个非常缓慢的大型xml文件上运行时,我的Azure Web应用程序会在几分钟后抛出空白页面。
我在Azure的故障请求跟踪日志中看到了这个:
ModuleName:DynamicCompressionModule
Notification:SEND_RESPONSE
HttpStatus:500
HttpReason:Internal Server Error
HttpSubStatus:19
ErrorCode:An operation was attempted on a nonexistent network connection. (0x800704cd)
可以看到,我一直在“玩弄”超时设置。也尝试捕捉所有异常,但没有捕捉到任何异常。
此外,在我的计算机上本地调试Web应用程序时,这个问题没有任何问题。可能是我办公室的互联网连接比Azure更好,导致XML文件被快速读取,没有任何问题。
有什么可能的解决方法吗?
编辑:我想保持XML文件的流式传输(我避免下载整个文件,因为用户可以选择只阅读源的前N个条目)。如果无法避免上述问题,我将很高兴有人帮助我向用户显示有意义的消息,而不是空白页。