2011-08-05 33 views
2

在II7上,我們託管了基於WCF/asp.net的API。爲了允許經典asp應用程序的用戶連接到API,我們必須發佈一個我們稱之爲「傳輸」的版本。這個傳輸版本也是在asp.net中編寫的,它指向相同的程序集,它的安全層不同於允許經典的asp進行身份驗證。使用傳輸級安全性而不是基於消息的安全性。Classic asp「驗證郵件安全性時發生錯誤。」 iis7傳輸級安全性

當使用瀏覽器加載服務引用時,我可以加載svcutil.exe ... WDSL頁面。

當使用我的測試asp網頁中調用從這個參考我碰到下面的返回Web方法:

完成調用Web服務。 狀態=內部服務器錯誤 ResponseText = a:驗證消息的安全性時發生InvalidSecurityAn錯誤。

這表明認證失敗。當使用asp.net或應用程序WCF風暴測試聯繫正常的API時,一切正常。

的API最近被遷移,它會出現的東西一直沒有設置正確,但我很茫然解釋什麼。

通過瀏覽器我得到的預期XML響應選擇它的時候,我可以瀏覽到svcutil.exe的... WDSL服務引用。

的用戶名和密碼利用工作使用利用基於消息的secuirty API的非傳統的ASP publicaiton時。

是否可以張貼一些故障排除提示,可以幫助diagnoise問題請特別是關於傳輸層安全性故障查找和安裝?

謝謝 斯科特

編輯補充以下更新:

試圖使用默認的應用程序池和一個新的應用程序池,但同樣的問題仍然存在。

我的測試頁面錯誤:responseText的= A:對於消息驗證安全性時發生錯誤InvalidSecurityAn。

IIS日誌顯示: V3 /運輸/ testclassicasptransportwcfservice.asp(200 0 0)(即IIS 200) /V3/Transport/DeviceService.svc/DeviceService(500 0 0)(即在iis誤差500)

注意:在TRANSPORT和V3上定義的虛擬目錄。 V3工作正常使用.NET,而不是經典的ASP進行身份驗證。

事件日誌: 由於存在以下錯誤,導致應用程序池'傳輸'的模板永久緩存初始化失敗:無法爲應用程序池創建磁盤緩存子目錄。數據可能有其他錯誤代碼。

該參考似乎表明一個修復,但許多DIR路徑和引用的「APPCMD」不存在。

_http://theether.net/kb/100127

回答

1

REF _http:// theether。淨/ KB/100127

負荷命令提示符 CD到C:\ WINDOWS \ SYSTEM32 \ INETSRV 進入:APPCMD列表配置-section:system.webServer/ASP 顯示以下路徑:C:\的Inetpub \ CONF \ TEMP \ ASP編譯模板 支票路徑存在(它) 檢查網絡服務是否有權訪問 「ASP編譯模板」 如果不是從APPCMD執行

ICACLS「C:\的Inetpub \的conf \ TEMP \ ASP編譯模板「/ grant」NETWORK SERVICE:(OI)(CI)(M)「

應該讀取」sucessf ully處理1個文件「

重新啓動應用程序池。

「驗證郵件安全性時出現」InvalidSecurityAn錯誤「問題仍然存在,但事件日誌中的」無法創建磁盤緩存子目錄....「錯誤不再發生。

對不起另一個更新。網絡服務權限更改DID不解決問題,更改爲DEFAULT APP POOL解決了問題。

終於領先了。已檢查:

  1. ServiceSecurityAudit在服務行爲中設置。 _http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/#
  2. IIS日誌(只顯示非特定錯誤500.)
  3. 啓用故障跟蹤(也顯示錯誤500)。
  4. 定製錯誤是關閉
  5. 場所的IE消息是關閉
  6. ASP客戶端和服務器端調試上
  7. ProcessMon運行,沒有錯誤。
  8. 的Web.config httpErrors errorMode =「詳細」 /> +

ServiceSecurityAudit找到我的「對象引用不設置爲一個對象的一個​​實例」,因此聽起來像我們的應用程序具有一個錯誤。


跟進(17/08/11):

服務安全審計記錄在這裏:

http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/

是關鍵爲我們解決這個問題。發現指出Business Objects和Data Access dll不匹配的對象引用錯誤。使用CLASSIC ASP通過TRANSPORT AUTHENTICATION聯繫WCF.NET API,在WCF部署中的Serviceviour.config文件中包含Service Security Audit之前,絕對沒有發現此錯誤。

* RESOLVED *