4

我正在修改我的 WCF API 以包含一项仅应向内部 IP 地址公开的新服务。我的 API 中的所有服务都以 SOAP、POX 和 JSON 的形式提供。我正在寻找的是一种行为或某种东西,它允许我实现一个简单的 IP 地址过滤器,处理来自内部 IP 的请求并拒绝其他一切。我希望它在配置中工作,因为 API 中的所有其他服务都应该对 Internet 可用。我做了一些谷歌搜索,但在 WCF 中找不到类似的东西。我错过了什么吗?

4

2 回答 2

4

好的,我想通了,在我看来,它有点光滑。我将 IP 过滤器系统实现为服务行为,然后在 web.config 中将其添加到我的服务中。这是我的新 Web 配置行为部分:

<serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    <behavior name="RestrictedServiceBehaviour">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <IPFilter filter="172.*.*.* 127.0.0.1" />          
    </behavior>
  </serviceBehaviors>

IPFilter 类实现 IDispatchMessageInspector 以尽快捕获请求,检查客户端 IP,如果与过滤器不匹配则抛出异常。如果有人感兴趣,我可以发布我的代码。

于 2009-04-29T19:09:32.130 回答
0

如果您的服务托管在 IIS 中,那么您可以使用 IIS 在每个网站的基础上执行此操作(可能是每个应用程序,但我不知道)。

于 2009-04-06T15:50:57.347 回答