ASP.Net检查是否存在远程文件

时间:2011-03-24 19:24:42

标签: c# asp.net css web-applications

我有一个ASP.Net网站,其中包含存储在文件服务器上的文件的链接。这些文件经常被修改,因此链接并不总是有效,这包括对权限的更改,被移动或删除的文件等。我在代码隐藏中实现了一个方法来检查这些链接在构造时的有效性,如果失败,代码将添加CSS以更改链接的颜色:

检查网址

    /// <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正在设置但找不到的任何其他位置。我不知道是否有一些后期处理会以某种方式清除应用于某些链接的任何样式。有些链接是有色的而其他链接不是这样的事实对我来说非常混乱。有没有其他人遇到过类似的行为?