我有一個在Windows Server 2003(32位)上運行的VB6程序,它使用Microsoft ServerXMLHTTP對象與使用NTLM身份驗證的Web服務建立HTTP連接。要獲得認證工作,我必須通過在命令提示符下運行64位Windows Server 2008上的NTLM身份驗證和ServerXMLHTTP?
proxycfg -p proxy-server dest-web-server
配置WinHTTP代理把目標服務器在代理繞過列表。
完成此操作後,每次對Web服務的調用都會導致3次HTTP調用到Web服務器,因爲ServerXMLHTTP對象首先嚐試匿名訪問,然後是2次調用以使NTLM身份驗證發生。這是正常的和預期的。
在命令提示符下
netsh winhttp set proxy proxy-server="proxy-server" bypass-list="dest-web-server"
NTLM身份驗證不再工作程序遷移到Windows Server 2008(64位),並使用等效代理服務器設置後。 Web服務器日誌顯示ServerXMLHTTP對象僅創建一個匿名HTTP連接並返回401響應,並且從不嘗試嘗試NTLM身份驗證。
我可能會使用SetProxy()方法根據存儲在應用程序的設置文件中的信息執行此操作。它節省了手動管理頭痛(或者至少將它隔離到應用程序的管理)並避免了這種錯誤。 – Bob77 2011-05-19 03:37:42