根据IP调用webservice方案
1、创建ClientIPs.xml
<?xml version="1.0" encoding="utf-8" ?>
<IPS>
<IP>127.0.0.</IP>
<IP>10.2.16.</IP>
</IPS>
2、在web.config的添加appSettings标签中添加 <add key="IPsXml" value="ClientIPs.xml"/>
3、在当前项目中添加web服务,由于时间比较紧,就拿目前在开发的VB项目为例。C#简单的
核心代码如下:
#Region "判断ip地址"
''' <summary>
''' 判断是否是允许访问的客户端IP地址
''' </summary>
''' <param name="strIP">客户端IP地址</param>
''' <returns>bool</returns>
''' <remarks></remarks>
Public Function IsAllowedIP(ByVal strIP As String) As Boolean
Dim xmlDoc As XmlDocument = New XmlDocument()
xmlDoc.Load(Server.MapPath(System.Configuration.ConfigurationManager.AppSettings("IPsXml")))
Dim rootNode As XmlNode = xmlDoc.DocumentElement '获取根节点
For Each node As XmlNode In rootNode.ChildNodes
If node.InnerXml.Substring(node.InnerXml.Length - 1, 1) = "." Then
' 如果是一个网段地址
If strIP.Contains(node.InnerXml) Then
Return True
End If
Else
If strIP = node.InnerXml Then
Return True
End If
End If
Next
Return False
End Function
#End Region
''' <summary>
''' 受限IP得到所有行政许可受理信息
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
<WebMethod(EnableSession:=True, Description:="受限IP得到所有行政许可受理信息")> _
Public Function GetAcceptances() As DataTable
If IsAllowedIP(Me.Context.Request.ServerVariables("REMOTE_ADDR").ToString()) Then
Return GetAcceptance() '调用业务方法
Else
Return Nothing
End If
End Function
webservice注释:普通的XML 注释不行,要用特性参数,Description来设置
OK这样就好了,弄好部署到服务器上
遇到调用的问题:
webservice远程测试显示 “测试窗体只能用于来自本地计算机的请求”
The test form is only available for requests from the local machine.
解决的方法:
在web.config中加入如下配置节内容
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>