在我的 asp.net 网站中,我正在动态构建某些页面。我从服务器加载了某些图像。如果图像不存在,那么我需要加载默认图像。
到目前为止,我一直在检查 url 是否有效,如果有效,那么我知道图像存在。如果 url 无效,那么我知道在我的代码中提供我的默认图像。为此,我这样做了:
//returns true if the url actually exists
//however, this will ALWAYS throw an exception if it exists, so beware the debugger.
public static bool IsValidUrl(string url) {
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(url);
httpReq.AllowAutoRedirect = false;
httpReq.Method = "HEAD";
httpReq.KeepAlive = false;
httpReq.Timeout = 2000;
HttpWebResponse httpRes = default(HttpWebResponse);
bool exists = false;
try {
httpRes = (HttpWebResponse)httpReq.GetResponse();
if (httpRes.StatusCode == HttpStatusCode.OK) {
exists = true;
}
} catch {
}
return exists;
}
但这并不是一个很好的做事方式,我不喜欢必须证明这样的例外。此外,如果我添加新图像,服务器不会认为新图像是有效的 url,直到某个时间过去(或者我在 IIS 中重新启动网站) - 这是导致我寻找另一种方法的错误。
有没有更好的方法来提供默认图像,以防我选择的图像不存在?