在查看Ayende's Racoon Blog的来源时,我看到了global.asax.cs:
// Work around nasty .NET framework bug
try
{
new Uri("http://fail/first/time?only=%2bplus");
}
catch (Exception)
{
}
Run Code Online (Sandbox Code Playgroud)
这似乎是第一个请求中发生的错误的解决方法.有谁知道这是什么错误或如何重现它?
通过谷歌搜索可以找到2010 年 3 月发表的这篇 Ayende 博客文章,我引用了其中的摘录:
我现在可以重现这个,这里是它是如何到达那里的:
Run Code Online (Sandbox Code Playgroud)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(); } }这花了一些时间才弄清楚。
从下面的评论线程(我已浏览但未详细阅读)来看,根本原因似乎是机器根配置文件中的错误,每个 ? 仅解析一次。AppDomain,因此第二次及以后没有错误。
习惯性地使用这个被烧过一次的构造,是程序员通过艰苦的经验积累起来的习惯。经验不足的人可能会嘲笑“货物崇拜”或“巧合编程”,而经验丰富的人只会微笑点头。
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |