У меня есть веб-сайт, который использует OLEDB для подключения к службам MS SQL Analysis Server. Я использую C ++ для вызова API OLEDB и создаю его как DLL, которая загружается в IIS и вызывается моим веб-сайтом. Я могу успешно подключиться к источнику данных, вызывая API OLEB, если я запускаю модуль C ++ локально, но моему веб-сайту не удается подключиться к источнику данных в IIS.
Сообщение об ошибке «На транспортном уровне обнаружена ошибка». В соответствии с Документы MSDN, это проблема аутентификации. Но анонимный пользователь допускается на стороне источника данных.
И любопытно, что мой сайт может нормально работать на встроенном веб-сервере VS2010. Я заметил одну вещь: встроенный веб-сервер VS2010 и локальный модуль C ++ работают с моей текущей учетной записью, а IIS — с учетной записью сетевой службы. Поэтому я настроил IIS, используя мою текущую учетную запись в соответствии с Эта статья. Но IIS по-прежнему не может подключиться к источнику данных.
Я решил эту проблему. Идентичность потока в IIS, используемого для обработки запроса, зависит от многих параметров в соответствии с этим документ. Когда impersonate имеет значение true, а режим аутентификации — Windows, если IIS использует анонимную аутентификацию, то идентификатором потока является MACHINE \ IUSR_MACHINE. Эта учетная запись не является доверенной источником данных. Использование других режимов аутентификации для IIS и вход в IIS с учетной записью, которой доверяет источник данных, может решить эту проблему
Других решений пока нет …