在 Web 应用程序中,我必须首先检查图像是否存在,然后显示该图像或虚拟图像。
我使用以下代码,它适用于以下 URL:
- “ http://www.somedomain.com/niceimage.png ”
- “ https://www.somedomain.com/niceimage.png ”。
public virtual bool WebResourceExists(string url)
{
WebHeaderCollection headers = null;
WebResponse response = null;
try
{
WebRequest request = WebRequest.Create(url);
request.Method = "HEAD";
response = request.GetResponse();
headers = response.Headers;
bool result = int.Parse(headers["Content-Length"]) > 0;
return result;
}
catch (System.Net.WebException)
{
return false;
}
catch (Exception e)
{
_log.Error(e);
return false;
}
finally
{
if (response != null)
{
response.Close();
}
}
}
在某些地方,该方法是使用与协议无关的 url 调用的,例如"//www.somedomain.com/niceimage.png"
.
此类 url 会引发异常:
System.InvalidCastException: Unable to cast object of type 'System.Net.FileWebRequest' to type 'System.Net.HttpWebRequest'
有没有办法使用与协议无关的 url,而不是仅仅"http:"
在 url 前面?