3

我有一个使用 OLEDB 连接到 MS SQL 分析服务器服务的网站。我使用 C++ 调用 OLEDB API,并将其构建为 DLL,然后加载到 IIS 中并由我的网站调用。如果我在本地运行 C++ 模块,我可以通过调用 OLEB API 成功连接到数据源,但是我的网站无法连接到 IIS 中的数据源。
错误消息是“在传输层中遇到错误”。根据MSDN 文档,这是一个身份验证问题。但是数据源端允许匿名用户。
并且很好奇我的网站在VS2010内置的web服务器上可以正常运行。我注意到的一件事是 VS2010 内置 Web 服务器和本地 C++ 模块都使用我当前使用的帐户运行,而 IIS 使用网络服务帐户运行。所以我根据这篇文章使用我当前使用的帐户配置了 IIS 。但是 IIS 仍然无法连接到数据源。

4

1 回答 1

0

我已经解决了这个问题。根据本文档,IIS 中用于处理请求的线程标识受许多选项的影响。当impersonate为true且认证方式为Windows时,如果IIS使用匿名认证,则线程的标识为MACHINE\IUSR_MACHINE。此帐户不受数据源信任。使用其他的IIS认证方式,使用数据源信任的账号登录IIS可以解决这个问题

于 2013-01-08T03:28:08.947 回答