views:

66

answers:

0

The ActiveForums module we're using as part of our DotNetNuke system has a bug in the XML for it's RSS feed. It doesn't correctly encode ampersands, it leaves them as & rather than encoding them as &

I've reported the bug to the company, but in the mean time I need a fix. So what I've done is create an intermediary page that makes a request to the RSS feed via a System.Net.HttpWebRequest.Create(url) and them performs a Regex.Replace to replaces any unencoded ampersands.

The problem is that when I run the code on our production server I get an exception: The remote server returned an error: (500) Internal Server Error.

The only reason I could think of was around authentication (As the server requires NTLM), however as far as I can tell I'm doing this part of it correctly. My code is shown below:

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 );

Updated: Here's what the event log says
Error code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired