2012-09-20 11 views
5

Mientras observa fuente de mapache Blog de Ayende, vi esto en global.asax.cs:¿Cuál es el error de Uri en .NET al que hace referencia Ayende en el código fuente de Raccoon Blog?

// Work around nasty .NET framework bug 
try 
{ 
    new Uri("http://fail/first/time?only=%2bplus"); 
} 
catch (Exception) 
{ 
} 

Esto parece ser una solución para un error que ocurre en la primera solicitud. ¿Alguien sabe cuál es el error o cómo reproducirlo?

+0

¿De verdad ha tenido un problema con esto o simplemente se está preguntando porque lo vio en ese código? Eso funciona bien para mí, y mirando a través del constructor 'Uri' en ILSpy, no parece que eso fallaría. Condiciones que provocarán que el constructor genere 'UriFormatException': http://msdn.microsoft.com/en-us/library/z6c2z492(v=vs.100).aspx – Gromer

+0

¿Lo eliminó y ver si algo falló? – Paparazzi

+2

No, no encontré un problema, esa es una razón más para preguntar, porque no creo que lo hayan puesto allí solo por diversión. Sería bueno saber si puede evitar algo y cuándo puede fallar. –

Respuesta

2

Un poco de google llega a this Ayende blog post desde marzo de 2010 de la cual cito un extracto:

puedo reproducir este momento, aquí cómo llegó hasta allí:

public class Strange : MarshalByRefObject 
{ 
    public void WTF() 
    { 
     Console.WriteLine(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 
     new Uri("http://localhost:58080/indexes/categoriesByName?query=CategoryName%3ABeverages&start=0&pageSize=25"); 
    } 
} 

public class Program 
{ 
    private static void Main() 
    { 
     var instanceAndUnwrap = (Strange) AppDomain.CreateDomain("test", null, new AppDomainSetup 
     { 
      ConfigurationFile = "" 
     }).CreateInstanceAndUnwrap("ConsoleApplication5", "ConsoleApplication5.Strange"); 
     instanceAndUnwrap.WTF(); 
    } 
} 

que tuvieron alguna hora de descubrir.

De la conversación de comentarios a continuación, que he desnatado pero no leído en detalle, la causa raíz parece ser un error en el archivo de configuración de raíz del equipo, ¿qué se analiza una vez? AppDomain, de ahí la falta de un error la segunda y posteriores veces.

Habitualmente el uso de este constructo una vez quemado es el tipo de hábito que los programadores acumulan a través de la experiencia dura. Los menos experimentados pueden burlar el "culto a la carga" o la "programación por coincidencia", a lo que los más experimentados solo sonreirán y asentirán.

Cuestiones relacionadas