2011-03-24 83 views
1

我有一个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被设置并且找不到任何其他位置的代码。我不知道是否有一些后期处理正在进行,以某种方式清除应用于某些链接的任何样式。有些链接是有色的,而其他链接则是有色的,这一事实让我非常困惑。有没有其他人遇到过类似的行为?

回答