我目前正試圖解決我寫的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