I suspect this has to do with the way you are using inline code and the data binding expression.
The way you are doing this is rather awkward and kind of defeats the intent of code behind. You are creating 2 strings in each iteration of your repeater. Why? The value for each comes from the query string so will clearly never change from item to item, so they should be in the code behind. Modify them as 'Protected' and your inline page code can see them.
One thing you might try is to change the 'Response.Write' shortcut inline snippets to data binding snippets:
<a href ='http://localhost/archivednews.aspx?Category=<%#NCategory%>&Month=<% #MonthNumber(Container.DataItem)%>&Year=<%#NYear%> &Page=1'><%#Container.DataItem%> - <%#NYear%> - <%#GetRichTextKeywords(NCategory)%></a>
-Peter
peterlanoie.blog