我们在 DotNetNuke 系统中使用的 ActiveForums 模块在XML中存在 RSS提要的错误。它没有正确编码&符号,它将它们保留为&
而不是将它们编码为&
我已经向公司报告了这个错误,但同时我还需要修复。所以我所做的就是创建一个中间页面,通过System.Net.HttpWebRequest.Create(url)
向RSS提要请求,并执行Regex.Replace
替换任何未编码的&符号。
问题是当我在生产服务器上运行代码时出现异常:远程服务器返回错误:(500)内部服务器错误。
我能想到的唯一原因是身份验证(因为服务器需要NTLM),但据我所知,我正确地做了这部分。我的代码如下所示:
string html = string.Empty;
string url = "http://intranet.nt.avs/dnn/Default.aspx?tabid=130";
WebResponse response;
WebRequest request = System.Net.HttpWebRequest.Create(url);
request.PreAuthenticate = true;
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
response = request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()) )
{
html = sr.ReadToEnd();
}
// Clean invalid XML
html = Regex.Replace( html, "&(?!amp;|gt;|lt;|quot;|apos;)", "&", RegexOptions.Multiline | RegexOptions.IgnoreCase );
Response.ContentType = "text/xml";
Response.Write( html );
更新:以下是事件日志的内容
错误代码:4005
事件消息:请求的表单身份验证失败。原因:提供的故障单已过期