В настоящее время я пытаюсь устранить странную ошибку в поставщике переписывания URL-адресов IIS, который я написал. У меня есть 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.
Отредактировано, чтобы добавить: шаблон соответствия в iis
(?! (Общий | Аякс | Сценарии | загрузка | XML)) ^ (\ ш | \ d | -. | | [? & = /]) +