C# 如何通过编程限制对Web服务的访问?

C# 如何通过编程限制对Web服务的访问?,c#,web-services,security,iis,C#,Web Services,Security,Iis,我正在编写一个传统的ASMX Web服务,使用C#with.NET2.0在IIS上进行部署。 webservice将部署在一个共享托管环境中,每个客户端都有自己的应用程序副本,位于一个单独的虚拟目录中(我知道,我知道,这是一个遗留应用程序)。每个虚拟目录中将有一个单独的Webservice副本 由于Webservice可能会做一些功能强大的事情,因此我希望有选择地将对它的访问限制在某些IP地址。在防火墙中这样做不是一个很好的选择,因为只有Web服务应该受到限制,而不是网站的其余部分——而且它是在

我正在编写一个传统的ASMX Web服务,使用C#with.NET2.0在IIS上进行部署。 webservice将部署在一个共享托管环境中,每个客户端都有自己的应用程序副本,位于一个单独的虚拟目录中(我知道,我知道,这是一个遗留应用程序)。每个虚拟目录中将有一个单独的Webservice副本

由于Webservice可能会做一些功能强大的事情,因此我希望有选择地将对它的访问限制在某些IP地址。在防火墙中这样做不是一个很好的选择,因为只有Web服务应该受到限制,而不是网站的其余部分——而且它是在每个虚拟目录级别上

我是否可以通过编程读取请求者的IP地址,并将其与列表进行比较,以便拒绝来自其他地址的呼叫?这有什么大的陷阱吗


谢谢

是的,你很容易做到

[WebMethod]
public bool IsAlive()
{
     string callingAddress = HttpContext.Current.Request.UserHostAddress;
     return (callingAddress == allowedAddress);
}
唯一的陷阱是维护IP地址列表


还值得注意的是,您可以在IIS中基于每个web应用程序配置IP地址访问控制。我在不同的时间使用了这两种方法,它实际上只是归结到如何维护授权IP地址列表

唯一的陷阱是维护IP地址列表

还值得注意的是,您可以在IIS中基于每个web应用程序配置IP地址访问控制。我在不同的时间使用了这两种方法,它实际上只是归结到如何维护授权IP地址列表