0

我有一个关于 Web API 的 Visual Studio 2013 调试模拟器如何工作的问题。

我在 Visual Studio 2013 中构建了一个 Web API 项目来访问外部服务器上的数据库。该代码是使用 VS2013 的 ASP.NET Web 应用程序项目模板构建的,用于 Web API 应用程序。构建完成后,运行调试会打开 localhost 端口 56618 的浏览器窗口,允许 Fiddler 访问以测试 Http 请求。

完成项目后,我使用 Web Deploy to IIS 将其发布到网站。但是,虽然页面会打开(现在位于 localhost:9812),但 http 请求会引发内部服务器错误 500。

仔细阅读 IIS FailedReqLogFiles,我注意到它失败的原因是数据库服务器拒绝访问 '<Domain>\<machine-name>$'。

我在具有读写权限的 sql 实例上添加了 '<Domain>\<machine-name>$' 作为有效登录名(Windows 身份验证,因为连接字符串包括“Integrated Security=true”),问题得到解决。

问题是,为什么 Visual Studio 调试模拟器没有同样的问题?

4

1 回答 1

1

因为模拟器在您自己的帐户(例如<Domain>\You)的上下文中运行该网站。您的帐户可以访问数据库,因此没有问题。

当您将其发布到 IIS 时,它开始在不同帐户的上下文中运行(<Domain>\Machine-Name- 但还有其他变体,具体取决于 IIS 的配置方式和 IIS 的版本),该帐户无权访问您的数据库。

于 2014-11-27T23:43:33.170 回答