none
web service 呼叫web service的問題 RRS feed

  • 問題

  •  

    各位好, 小弟最近寫了兩個web service, A與B, 都在同一個server上

    我用某個AP去call A, 然後A會去call B

    在web service使用匿名存取的情況下, 整個流程是可以跑, 沒問題的

     

    但是因為此service有接觸到DB與檔案系統, 所以我對service設定了整合式windows驗證

    也就是要使用A,B這兩個web service, 要使用在該server上的某個windows帳號密碼驗證

     

    但是好玩的事發生了, 我在ap中call A時 用了以下的code, 可以正常call, 會得到result

    程式碼區塊
    Dim a As New FileDataReceiver.FileService
    a.Url = "http://test/test1.asmx"
    a.Credentials = New System.Net.NetworkCredential(account, password)
    Dim result As Boolean = a.FileReceive()

     

    但是我在A中加上跟上面一樣這段, 只不過把變數改掉, 然後A call B, 卻跟我講 HTTP 狀態 401: 拒絕存取

    程式碼區塊
    Dim b As New FileDataReceiver.FileStoreService
    b.Url = "http://test/test2.asmx"
    b.Credentials = New System.Net.NetworkCredential(account, password)
    Dim result As Boolean = b.FileReceive()

     

    但是我試過, 另外寫一個ap去用一樣的方法call B, 卻可以正常的跑

    就只有在A中去call B有問題

    請問是否在web service中去呼叫另一個需要驗證的web service, 需要特殊作法?

    2007年11月21日 上午 09:09

解答

  • HI,

     

    如果Service B欲執行需要較高權限的工作, 必須在Service B的web.config設定檔設定<identity>標籤, 指定Service B的執行帳號, 當然所指定的帳號必須擁有足夠的權限完成Service B欲執行的工作

     

    tihs

     

    2007年11月23日 上午 04:09

所有回覆

  • 我「猜」A去呼叫B是用ASPNET這個帳號(Server上則為Network Service)

    所以說提供這個帳號權限看看。

     

    2007年11月22日 上午 10:28
    版主
  • HI,

     

    如果Service B欲執行需要較高權限的工作, 必須在Service B的web.config設定檔設定<identity>標籤, 指定Service B的執行帳號, 當然所指定的帳號必須擁有足夠的權限完成Service B欲執行的工作

     

    tihs

     

    2007年11月23日 上午 04:09