Según http://ayende.com/blog/4599/hunt-the-bug, me encontré con uno de esos casos en los que "La respuesta no está disponible en este contexto".HttpUtility.UrlEncode y Application_Start
muy simplificada, la siguiente se produce una excepción en ciertos escenarios en Windows Server 2008/IIS7/ASP.NET 4,0
public class Global : HttpApplication
{
public void Application_Start(object sender, EventArgs e)
{
HttpUtility.UrlEncode("Error inside!");
}
}
Las soluciones que he visto comprender uno de los siguientes:
- Haz lo que hizo Ayende y "escribe mi propia HttpUtility (bueno, toma la de Mono y modifícala) para evitar este error".
- o determinar si el uso de HttpEncoder.Default es el truco. Estoy tratando de encontrar la mejor manera de hacer esto.
- o utilizar Uri.EscapeDataString según Server.UrlEncode vs. HttpUtility.UrlEncode
Tal vez no es mi mejor día buscando en Google, pero la forma de aplicar HttpEncoder.Default?
Recomendaciones?
Buen trabajo. Aquí está la parte de reflexión/decodificador pública urldecode cadena estática (cadena urlPart) { retorno typeof (System.Net.WebClient) .assembly .GetType ("System.Net.HttpListenerRequest + ayudantes") .InvokeMember ("UrlDecodeStringFromStringInternal", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod, null, null, nuevo objeto [] {urlPart, Encoding.UTF8}) como cadena; } –
@DmitryDzygin gracias por el decodificador – Beygi
Gracias por la respuesta. Lo he marcado como la respuesta, aunque es probable que simplemente adapte la versión mono (consulte https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web/HttpUtility .cs) simplemente porque entonces también puedo alejarme de una dependencia en System.Web que solo está ahí debido a HttpUtility.UrlEncode. – Ted