我对Web API的Visual Studio 2013调试模拟器如何工作有疑问。
我在Visual Studio 2013中构建了一个Web API项目来访问外部服务器上的数据库。该代码是使用VS2013的ASP.NET Web应用程序项目模板为Web API应用程序构建的。构建完成后,运行调试打开了localhost端口56618的浏览器窗口,允许Fiddler访问以测试Http请求。
我完成项目后,将其发布到使用Web Deploy到IIS的网站上。但是,当页面打开时(现在在localhost:9812),http请求将引发内部服务器错误500.
仔细阅读IIS FailedReqLogFiles,我注意到它失败的原因是数据库服务器拒绝访问'< Domain> \< machine-name> $'。
我添加了'< Domain> \< machine-name> $'在具有读写权限的sql实例上作为有效登录(Windows身份验证,包括连接字符串" Integrated Security = true"),问题已解决。
问题是,为什么Visual Studio调试模拟器没有相同的问题?
答案 0 :(得分:1)
因为模拟器在您自己的帐户的上下文中运行网站(例如<Domain>\You
)。您的帐户有权访问数据库,因此没有问题。
当您将其发布到IIS时,它开始在另一个帐户(<Domain>\Machine-Name
- 的上下文中运行 - 但是还有其他变体,具体取决于IIS的配置方式和IIS的版本)可以访问您的数据库。