根據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