C# 阻止对url的直接访问并仅允许系统访问

C# 阻止对url的直接访问并仅允许系统访问,c#,asp.net,security,iis-6,C#,Asp.net,Security,Iis 6,我想阻止对url的访问,除了请求图像的iis usr 所以我有:www.myurl.com/somedirectory/myfile.ashx 我希望只有来自代码隐藏的请求才能访问此文件,而不是可以通过转到url手动访问该文件的用户/机器人程序/非客户端 需要考虑到服务器是负载平衡的,我不确定这是否会导致问题 我该怎么做呢 请求的服务器端: HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(imageUrl); http

我想阻止对url的访问,除了请求图像的iis usr

所以我有:
www.myurl.com/somedirectory/myfile.ashx

我希望只有来自代码隐藏的请求才能访问此文件,而不是可以通过转到url手动访问该文件的用户/机器人程序/非客户端

需要考虑到服务器是负载平衡的,我不确定这是否会导致问题

我该怎么做呢

请求的服务器端:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
httpRequest.Method = "GET";
httpRequest.UserAgent = "MobileQ.NET";
httpRequest.ContentType = "image/png";
response = httpRequest.GetResponse().GetResponseStream();

IIS7内置了请求过滤功能,如果您使用的是该版本或更高版本,则该功能可能会有所帮助


如果请求来自
localhost
,您可以签入您的
myfile.ashx

string client = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if(client == "localhost" || client == "127.0.0.1" || client == "::1")
    //DoWork
else
{
    HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.Forbidden;
    return;
}

您是在服务器端重新请求文件,还是访问页面的客户端浏览器请求文件?图像是在服务器端请求的,但从查询字符串获取输入。这有帮助吗?谢谢,抱歉,我们目前仍在冰河世纪使用iis 6。谢谢你的提示!如果我们的服务器是负载平衡的,这将是一个问题,对吗?我将执行[“服务器名称”]这将解决此问题。这将让您知道这是否有效。如果每个服务器只运行到自身(而不是退出负载平衡器并返回),那么它们的负载平衡将无关紧要。