【发布时间】:2011-09-07 20:28:09
【问题描述】:
我目前正在尝试解决我编写的 IIS url 重写提供程序中的一个奇怪错误。我有一个 if ... else 在每个块内都有一个 return 语句。发生的情况是第一个块 (if) 被命中并正常执行,返回被命中但随后该方法不返回并继续进入 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 中使用附加到 Windows 7 x64 机器上的 VS2010 进程对其进行调试。
编辑添加:iis 中的匹配模式是 ^(?!(common|ajax|Scripts|uploads|xml))(\w|\d|-|.|[?&=/])+
【问题讨论】:
标签: c# iis url url-rewriting return