2

数か月前、Cold Fusion Web サービスにアクセスするアプリケーションを VB.Net で作成しました。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

ここに私のWebサービスコードがあります:

<cfcomponent output="false">
    <cffunction name="echoString" returnType="string" output="no" access="remote">
        <cfargument name="input" type="string">
        <cfreturn #arguments.input#>
    </cffunction>
</cfcomponenet>

Windows ファイアウォールを無効にしようとしましたが、効果がありませんでした。

4

1 に答える 1

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

これが役立つかどうかはわかりませんが、試してみる価値はあります

于 2013-08-14T20:52:11.020 に答える