我有一个网站,它使用 OLEDB 连接到 MS SQL Analysis Server 服务。我使用 C++ 调用 OLEDB API,并将其构建为 DLL,将其加载到 IIS 中并由我的网站调用。如果我在本地运行 C++ 模块,我可以通过调用 OLEB API 成功连接到数据源,但我的网站无法连接到 IIS 中的数据源。
错误消息是“传输层遇到错误”。根据MSDN文档 http://technet.microsoft.com/en-us/library/cc917670.aspx,这是一个身份验证问题。但数据源端允许匿名用户。
而且奇怪的是我的网站可以在VS2010内置的Web服务器中正常运行。我注意到的一件事是 VS2010 内置 Web 服务器和本地 C++ 模块都使用我当前使用的帐户运行,而 IIS 则使用网络服务帐户运行。所以我根据以下内容使用我当前使用的帐户配置了 IIS本文 https://stackoverflow.com/questions/6914653/how-to-use-domain-windows-user-account-as-app-pool-identity。但IIS仍然无法连接到数据源。
我已经解决了这个问题。根据此,IIS 中用于处理请求的线程的身份受到许多选项的影响document http://msdn.microsoft.com/en-us/library/aa302377.aspx。当impersonate为true且身份验证模式为Windows时,如果IIS使用匿名身份验证,则线程的标识为MACHINE\IUSR_MACHINE。该帐户不受数据源信任。 IIS使用其他认证方式,并使用数据源信任的账号登录IIS即可解决此问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)