我有一个ASP.Net网站,其中包含指向存储在文件服务器上的文件的链接。这些文件会不断修改,所以这些链接并不总是有效的,这包括对权限的更改,被移动或删除的文件等。我在代码隐藏中实现了一个方法来检查这些链接构建时的有效性,如果失败,代码将添加CSS改变链接的颜色:ASP.Net检查是否存在远程文件
检查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代码隐藏的链接url被设置并且找不到任何其他位置的代码。我不知道是否有一些后期处理正在进行,以某种方式清除应用于某些链接的任何样式。有些链接是有色的,而其他链接则是有色的,这一事实让我非常困惑。有没有其他人遇到过类似的行为?