无法从VB.NET访问Web服务

时间:2013-07-11 15:30:38

标签: vb.net web-services coldfusion coldfusion-10

几个月前,我在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防火墙,但这没有效果。

1 个答案:

答案 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

不确定这是否会有所帮助,但值得一试