我有一个 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");
}
我的问题是并非所有无效链接都添加了样式。奇怪的是,当我在 Debug模式下使用未着色的错误链接之一单步执行该方法时,该方法将返回 false 并按预期为链接着色。与我上面介绍的内容相比,涉及的内容更多,但我搜索了整个 aspx 代码隐藏以查找设置链接 url 的任何其他位置,但找不到任何内容。我不知道是否有一些后期处理以某种方式清除了应用于某些链接的任何样式。有些链接是彩色的,而另一些则不是,这一事实让我很困惑。有没有其他人遇到过类似的行为?
最佳答案
查看 ASP.NET MVC 3 中的新 DataAnnotations。
关于c# - ASP.Net 检查远程文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5424414/