Модуль ActiveForums , который мы используем как часть нашей системы DotNetNuke , содержит ошибку в XML из-за RSS-канала . Он не правильно кодирует амперсанды, он оставляет их как &
, а не кодирует их как &
Я сообщил об ошибке в компанию, но пока что мне нужно исправить. Итак, я создал промежуточную страницу, которая отправляет запрос на канал RSS через System.Net.HttpWebRequest.Create(url)
, а затем выполняет 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
Сообщение о событии: проверка подлинности с помощью форм не выполнена. Причина: срок действия билета истек