我有一个由几个.aspx页面组成的ASP.NET应用程序。我希望其中一个.aspx页面只能由特定的IP访问。这可能吗?我知道你可以在网站级别的IP白名单,但你可以在一个应用程序中的单个URL的IP白名单?
jmp7cifd1#
下面的资源演示了如何在ASP.NET中检测客户端IP:http://bytes.com/topic/asp-classic/answers/439176-how-get-clients-ip-address-asp-net一旦你有了IP,从你选择的存储机制中加载你的白名单,也许在一个Init事件中(如果在一个页面中),如果IP不匹配,就像这样响应。(如果不在一个页面中,就使用HttpContext.Current.Response。)
HttpContext.Current.Response
if (!mySafeIpList.Contains(clientIP)) { Response.Clear() Response.StatusCode = (int)HttpStatusCode.Unauthorized Response.End() }
字符串或者,只是简单地重定向到一个有效的页面:
Response.Redirect("~/Head-Fake.aspx")
型我希望这能帮上忙。
ncecgwcz2#
不幸的是,我很确定你不能通过IIS对一个页面做这件事(如果你想验证的话,请访问Serverfault.com了解更多细节),但是如果你想以编程的方式做这件事,你可以在你的global.asax文件中挂钩Application_BeginRequest。根据你的限制检查请求的URL和请求的IP地址,只有当它们通过时才允许请求继续。
ve7v8dk23#
您可以随时根据应用中自己的白色列表检查Request.ServerVariables[“REMOTE_HOST”]。
3条答案
按热度按时间jmp7cifd1#
下面的资源演示了如何在ASP.NET中检测客户端IP:
http://bytes.com/topic/asp-classic/answers/439176-how-get-clients-ip-address-asp-net
一旦你有了IP,从你选择的存储机制中加载你的白名单,也许在一个Init事件中(如果在一个页面中),如果IP不匹配,就像这样响应。(如果不在一个页面中,就使用
HttpContext.Current.Response
。)字符串
或者,只是简单地重定向到一个有效的页面:
型
我希望这能帮上忙。
ncecgwcz2#
不幸的是,我很确定你不能通过IIS对一个页面做这件事(如果你想验证的话,请访问Serverfault.com了解更多细节),但是如果你想以编程的方式做这件事,你可以在你的global.asax文件中挂钩Application_BeginRequest。根据你的限制检查请求的URL和请求的IP地址,只有当它们通过时才允许请求继续。
ve7v8dk23#
您可以随时根据应用中自己的白色列表检查Request.ServerVariables[“REMOTE_HOST”]。