我目前正试图解决我写的IIS url重写提供程序中的一个奇怪的错误。我有一个if ... else与每个块内的return语句。会发生什么是第一个块(如果)被击中并正常执行,返回被击中,但该方法不会返回并继续进入else块。这是有问题的代码:返回语句后继续执行方法
public string Rewrite(string value)
{
string v = value;
if (v.Contains(".aspx") || v.Contains("buzz") || v.Contains("promo")) {
return v;
} else {
string val = "";
using (DataContext db = new DataContext(cs)) {
var lp = db.LandingPages.FirstOrDefault(l => l.L_Url == v);
if (lp != null) val = "landing_page.aspx?id=" + lp.L_ID;
}
return CoalesceStrings(val, v);
}
}
(我知道有很多可以做更好的,搞什么V =值分别用于调试目的 - 生病提高它时,它工作正常!)
有任何想法吗?这似乎不是这种方法的正确行为。我正在IIS 7.5中调试它,使用附加到VS2010在Windows 7 x64机器上进行处理。
编辑补充:(?!(共同| AJAX |脚本|上传| XML))IIS中的匹配模式是 ^(\ W | \ d | - | | [?& = /])+
值是一样的,即时按f10步骤。正则表达式应该避免任何非代码文件。当我设置一个断点并按下刷新时,bp只被命中一次 - 这会让我相信它有相同的请求? – 2011-06-03 14:16:19
@Tom Broad - 什么价值正在通过和被评估?在这种情况下, – NerdFury 2011-06-03 14:42:59
value =“buzz/some-url” – 2011-06-03 16:19:25