2012-11-19 18 views
3

我有一個網站使用OLEDB連接到MS SQL分析服務器服務。我使用C++來調用OLEDB API,並將其構建爲DLL,該DLL加載到IIS中並由我的網站調用。如果我在本地運行C++模塊,但是我的網站無法連接到IIS中的數據源,則可以通過調用OLEB API成功連接到數據源。
錯誤消息是「在傳輸層遇到錯誤」。根據MSDN documents,這是一個身份驗證問題。但匿名用戶在數據源方面是允許的。
很奇怪我的網站可以在VS2010內置的web服務器上正常運行。我注意到的一件事是VS2010內置的Web服務器和本地C++模塊都使用我當前的使用帳戶運行,並且IIS使用網絡服務帳戶運行。所以我使用我當前的使用帳戶根據this article配置了IIS。但IIS仍然無法連接到數據源。IIS未能調用OLEDB API

回答

0

我已經解決了這個問題。根據此document,用於處理請求的IIS中的線程標識受許多選項影響。當impersonate爲true並且身份驗證模式爲Windows時,如果IIS使用匿名身份驗證,則線程的標識爲MACHINE \ IUSR_MACHINE。此帳戶不受數據源的信任。使用IIS的其他身份驗證模式並使用帳戶信任的數據源登錄IIS可以解決此問題