2012-08-28 100 views
2

我已經使用自定義AppPool在IIS 6上託管了WCF服務。此AppPool配置爲在IIS_WPG組中的用戶下運行。在IIS WPG組中使用用戶託管的WCF服務?

我可以從遠程位置訪問該服務,可以看到WSDL爲好,但是當我試圖通過「WCF測試客戶端」訪問相同的服務,我得到了以下錯誤

enter image description here

更新:當我通過將AppPool的身份更改爲「網絡服務」組來運行相同的服務時,可以通過測試客戶端訪問服務。 因此,服務元數據只有在服務以「網絡服務」(這是用戶的默認身份)之外的身份運行時纔可訪問

+0

檢查這個問題的答案:HTTP ://stackoverflow.com/questions/5199541/failed-to-add-a-service-service-metadata-may-not-be-accessible-make-sure-your看來你的服務缺少它的元數據(mex)端點。 –

+0

珊瑚,mex端點從未在服務配置中定義。問題稍有不同,只有服務在自定義用戶身份下運行時纔會發生,而不是「網絡服務」。 – Nexus23

+0

自定義用戶標識對服務運行所需的所有文件擁有權限?包括來自wwwroot和證書的文件(如果你已經增加了安全性)? –

回答

1

我在過去遇到過這個問題,解決方案是使用服務進行身份驗證客戶端和託管該服務的服務器之間的帳戶。

0

我有同樣的問題,如上所述..這是我找到解決這個問題時所做的事情。

我將開始將WCF的部署過程傳遞給IIS6。

  1. 創建一個文件夾到服務器並複製WCF包。
  2. 爲您的WCF創建一個AppPool。
  3. 右鍵單擊新創建的應用程序池,選擇屬性,然後轉到標識選項卡。選擇「可配置」,然後輸入您的服務帳戶憑證而不是網絡服務。
  4. 我沒有創建一個新的網站。就我而言,我在默認網站下創建了一個虛擬目錄,並將其指向我複製的WCF文件夾。
  5. 創建虛擬目錄後,右鍵單擊它,然後選擇屬性。下面是每個選項卡

    虛擬目錄選項卡

    • 點擊創建按鈕來創建應用程序名稱的設置。
    • 在執行權限中選擇「僅腳本」。
    • 選擇您創建的AppPool。
    • 單擊應用按鈕保存更改。

    單據選項卡

    • 添加新的內容 - 你的WCF .svc文件的名稱。
    • 單擊應用按鈕保存更改。

    目錄安全性選項卡

    • 在身份驗證和訪問控制單擊編輯按鈕。
    • 使用您的服務帳戶憑證更改用戶名和密碼。
    • 單擊確定(如果需要重新確認,請再次輸入密碼)。
    • 單擊應用按鈕保存更改。

    ASP.Net標籤

    • 選擇4.0.30319版本(如果需要的.NET Framework 4.0)
    • 點擊Apply按鈕保存更改。
  6. 現在,轉到計算機管理>系統工具>本地用戶和組>組

  7. 打開IIS_WPG組,並添加您的服務帳戶。

  8. 然後去開始>管理工具 - >本地安全策略

  9. 展開安全設置>本地策略>用戶權利指派。搜索作爲服務登錄,然後在那裏添加您的服務帳戶。

  10. 最後,轉到C:\ WINDOWS \ Temp文件夾。右鍵點擊它然後選擇屬性。點擊安全標籤,然後添加您的服務帳戶。

  11. 要設置特殊權限,請單擊高級按鈕。

  12. 選擇您的服務帳戶,然後點擊編輯按鈕。在權限列表中,勾選或選中「列出文件夾/讀取數據」和「刪除」權限。點擊確定並應用按鈕以應用更改。如果消息框提示您,請單擊是以應用於子文件夾中。

  13. 現在,最後一刻。確保應用程序池正在運行。在瀏覽器中測試WCF,然後在WCF Test客戶端中測試。

  14. 在我的情況下,它的工作,完美:)

希望這將幫助你...