几个月前,我在VB.Net中编写了一个访问Cold Fusion Web服务的应用程序。 Web服务(位于云上的CF服务器上)在我的VB.Net项目中设置为Web引用。当我在运行Windows Server 2003的系统上执行构建的应用程序时,无论使用何种Web服务都没有问题。
快进到今天。我试图使用相同的网络/连接在相邻的Win7计算机上使用此Web服务,每次我在VS2010 IDE中运行应用程序或作为构建的应用程序时,它都会给出错误:“底层连接已关闭:连接意外关闭。“
我没有对Web服务或VB.Net代码进行任何更改。
会导致这样的错误?
这是我使用该服务的VB.NET代码:
Public Function ConnectedToTheInternet() As Boolean
Dim myservice = New TestService.testservicecfc()
Try
myservice.echoString("hello")
ConnectedToTheInternet = True
Catch ex As Exception
Windows.Forms.MessageBox.Show(ex.Message)
ConnectedToTheInternet = False
End Try
End Function
这是我的网络服务代码:
<cfcomponent output="false">
<cffunction name="echoString" returnType="string" output="no" access="remote">
<cfargument name="input" type="string">
<cfreturn #arguments.input#>
</cffunction>
</cfcomponenet>
我尝试过禁用我的Windows防火墙,但这没有效果。
答案 0 :(得分:0)
不太确定,但是我会尝试添加一些代码权限,查找基于角色的安全性,并确保您的应用程序在代码中具有访问服务器的所有权限。
使用 GenericIdentity 和 GenericPricipal 关键字。
这是一些示例代码
Imports System
Imports System.Security.Principal
Imports System.Threading
Public Shared Sub Main()
'Hard coded username
Dim strUsername As String = "admin"
'Create GenericIdentity
Dim gidMyID as New GenericIdentity(strUsername)
Dim strMyRole As String = "Some Role"
'Create GenericPrincipal
Dim gplMyPrincipal As New GenericPrincipal(MyIdentity, MyRoles)
'Store the principal for later use
Thread.CurrentPrincipal = gplMyPrincapal
End Sub
您可以设置此项以便它将您视为管理员,然后您需要做的就是告诉您的服务器您允许您定义的角色访问Web服务。
如果您已经过身份验证,最后一部分代码就是调用Web服务
if(String.Compare(gplMyPrincapal, "DOMAIN\Admin", True) = 0) Then
'enter code here
Else
Msgbox("Cannot Connect", "Error")
End If
不确定这是否会有所帮助,但值得一试