我公开了MVC WebAPI,并且只想接受来自127.0.0.1的请求。原因是将要使用此WebAPI函数的应用程序将托管在同一个WebAPI函数上 IIS服务器作为虚拟应用程序。
有人可以建议如何实现上述目标以及是否有更优雅的解决方案。
答案 0 :(得分:1)
覆盖DelegatingHandler
并编写一个自定义处理程序,它会检查请求的主机,如果符合您的条件,则继续或拒绝请求。
public class CustomHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//check here for host of request
if(!criteria)
{
request.Properties.Add("Forbidden", true);
}
return base.SendAsync(request, cancellationToken);
}
}
在WebApiConfig
中将此处理程序注册为
public static void Register(HttpConfiguration config)
{
config.MessageHandlers.Add(new CustomHandler());
}
答案 1 :(得分:0)
您是否需要通过自定义软件执行这些操作?
您可以将iis设置为仅绑定到内部地址(甚至可能更改端口),并确保服务器的防火墙不会公开该绑定。
你能否澄清想要这个的原因?如果您只绑定localhost并且不公开WebApi,则可以直接从代码中调用api方法。