加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET WebAPI中的模拟和异步

发布时间:2020-12-16 04:29:14 所属栏目:asp.Net 来源:网络整理
导读:更新2 这个问题最初是“模仿是否适用于Web API?” 对这个问题的问题是“是的,确实如此”. 但问题不在于Web API,而在于模仿本身. (问题的描述如下) 但现在我想告诉其他人解决方案. 我的控制器是异步的,我错误的前提是模拟线程产生的任何线程都与其父线程具有
更新2

这个问题最初是“模仿是否适用于Web API?”
对这个问题的问题是“是的,确实如此”.

但问题不在于Web API,而在于模仿本身. (问题的描述如下)

但现在我想告诉其他人解决方案.

我的控制器是异步的,我错误的前提是模拟线程产生的任何线程都与其父线程具有相同的身份.
默认情况下为false:TPL不会跨线程进行模拟.

模拟流程可以启用programmatically or in configuration.
请注意,应该对aspnet.config文件进行更改,而不是对应用程序的web.config进行更改.

正如this post所述,每个应用程序池都可以设置aspnet.config文件.

this post安德鲁亲切地提供了关于更详细的整个任务的链接.

对于那些第一次打开模拟的人,我想要注意IIS 7.5有一个非常好的功能来输入模拟帐户的凭据.配置文件中不需要这些凭据,只能写入.

<identity impersonate="true"/>

输入凭据后,它们将自动添加到配置文件中.

原始问题:

我转而模仿并提供了用户凭据.

<identity impersonate="true" usernName="foo" password="bar"/>

但是当我通过Entity Framework连接到sql server时,我收到错误“用户{MachineName} $登录失败”.那就是EF在IUSR账户下运行.同时,WindowsIdentity.GetCurrent()返回’foo’用户的身份.

模拟帐户在启用了Windows身份验证的SQL服务器上具有所有必需权限.

此外,如果我禁用模拟并只设置应用程序池以使用此标识的凭据运行,一切正常.

我无法理解为什么在模拟开启时它不起作用但AppPool在默认帐户下运行.

更新1

EF连接字符串是

<add name="PtKbEntities" connectionString="metadata=...;provider=System.Data.SqlClient;provider connection string=&quot;data source=...;initial catalog=...;Trusted_Connection=Yes;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我在Win2008 Srv,IIS 7.5上托管应用程序

解决方法

正如这 answer解释的那样; web.config中的模拟会覆盖应用程序池中的标识.

在我看来,有一个很好的解释here使用哪一个:模仿或应用程序池

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读