当使用Angular的$ resource填充下拉列表时,在WebAPI中调用一个特定端点时,我得到'Underlining提供程序在Open上失败'。 MVC视图中的表单如下所示:
<div ng-app="myApp" ng-controller="myController as ctrl">
<select ng-options="..." />
<select ng-options="..." />
<select ng-options="..." />
</div>
MVC / Angular客户端前端项目在myApp.factory()中配置了$ resource。 WebAPI服务项目只有一个带有多个端点的控制器。所有方法都使用相同的存储库通过公共Context对象从SQL Server检索数据。在VS2015中调试实例时,所有方法都会正确返回数据。当项目发布到IIS服务器时,麻烦的端点将返回几个初始调用的数据。然后它返回HTTP 500错误,说'基础提供程序在打开时失败'。再次重新发布项目时,端点将再次处理多个调用,然后再执行错误500。有谁知道为什么?感谢。
答案 0 :(得分:0)
我认为我可能会遇到模拟帐户的问题,不会像Impersonation and asynchrony in ASP.NET WebAPI中提到的那样从WebAPI流向存储库。
我的存储库中的所有方法都是异步方法。 IE浏览器调试器显示{MachineName} $是帐户执行针对SQL Server的查询,但是在WebAPI项目的Web.config中启用了模拟。我不是IIS服务器的服务器管理员,因此IIS服务器上的ASPNET.config和更改应用程序池帐户是不可行的。此外,我的应用程序与许多其他应用程序共享相同的应用程序池。这是我的web.config中的connectionstring和impersonate:
<add name="MyContext" connectionString="Data Source=SQLServerName;initial catalog=MyDatabaseName;integrated security=SSPI;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
&#13;
<identity impersonate="true" userName="myDomain\impersonatedAccount" password="thePassword" />
&#13;