У меня есть сайт ASP.Net со ссылками на файлы, хранящиеся на файловом сервере. Эти файлы постоянно изменяются, и поэтому ссылки не всегда будут действительными, включая изменения в разрешениях, перемещаемых или удаляемых файлах и т. Д. Я реализовал метод в коде для проверки достоверности этих ссылок по мере их создания, в случае неудачи код добавит CSS для изменения цвета ссылки:
Проверьте URL
/// <summary>
/// Check if a URL exists. Method by http://www.vcskicks.com/check-website.php
/// </summary>
/// <param name="url">URL to validate</param>
/// <returns>True if the URL was resolved, false otherwise</returns>
private static bool validURL(string url)
{
Uri urlCheck = new Uri(url);
WebRequest request = WebRequest.Create(urlCheck);
request.Timeout = 5000;//Timeout set to 5 seconds
WebResponse response;
try
{
response = request.GetResponse();
if (request.RequestUri != response.ResponseUri)
return false;
return true;
}
catch (Exception e)
{
if (e.Message.Contains("denied"))
return true; //url exists but access is denied
else
return false; //url does not exist
}
}
Вызов вышеуказанного метода
link.NavigateUrl = "file://" + serverLocation;
//MODIFICATION 3/21/11 - change link to DarkRed if it is not valid
if (!validURL(link.NavigateUrl))
{
link.Attributes.Add("style", "color: DarkRed");
}
Моя проблема в том, что не все недействительные ссылки получают стиль, добавленный к ним. Странно то, что когда я выполняю метод в режиме отладки, используя одну из плохих ссылок, которые не были окрашены, метод возвращает false и окрашивает ссылку, как и ожидалось. Это намного сложнее, чем то, что я представляю выше, но я искал весь код aspx за любыми другими местами, где устанавливается ссылка, и не мог найти ни одного. Я не знаю, происходит ли какая-то постобработка, которая каким-то образом очищает любые стили, которые были применены к некоторым ссылкам. Тот факт, что некоторые ссылки окрашены, а другие нет, меня очень смущает. Кто-нибудь еще сталкивался с подобным поведением раньше?