根据http://ayende.com/blog/4599/hunt-the-bug,我遇到了其中一种情况,即“响应在此上下文中不可用”。HttpUtility.UrlEncode和Application_Start
大大简化,以下Windows服务器上抛出在某些情况下例外2008/IIS7/ASP.NET 4.0
public class Global : HttpApplication
{
public void Application_Start(object sender, EventArgs e)
{
HttpUtility.UrlEncode("Error inside!");
}
}
,我见过的解决方案包括以下之一:
- 就像Ayende所做的那样,“写我自己的HttpUtility(好吧,从Mono那里拿一个修改它)来避免这个bug。”
- 或者确定是否使用HttpEncoder.Default来代替这个技巧。我试图追踪如何最好地做到这一点。
- 或使用Uri.EscapeDataString按Server.UrlEncode vs. HttpUtility.UrlEncode
也许这不是我最好的google搜索的一天,但如何实现HttpEncoder.Default?
建议?
干得好。这里的反射器/解码器部分公共静态字符串UrlDecode(字符串urlPart) { 回报的typeof(System.Net.WebClient) .Assembly .GetType( “System.Net.HttpListenerRequest +助手”) .InvokeMember( “UrlDecodeStringFromStringInternal” BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod,null,null, new object [] {urlPart,Encoding.UTF8})as string; } – 2011-06-24 09:12:01
@DmitryDzygin感谢解码器 – Beygi 2011-06-24 09:42:17
感谢您的回应。已经标记为答案,即使我可能只是适应单声道版本(请参阅https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web/HttpUtility .cs),因为那样我也可以从System.Web的依赖关系中解脱出来,因为它只是因为HttpUtility.UrlEncode而存在。 – Ted 2011-06-27 17:57:40