C# ASP.NET MVC捆绑包中存在500个内部服务器错误

C# ASP.NET MVC捆绑包中存在500个内部服务器错误,c#,asp.net-mvc,asynchronous,async-await,bundle,C#,Asp.net Mvc,Asynchronous,Async Await,Bundle,我确实使用ASP.NET MVC绑定来绑定我的JavaScript文件。当我检查并检查浏览器中的网络选项卡时,当我的捆绑包要加载时,我会看到500内部服务器错误。 答复: 在上一个异步操作完成之前,在此上下文上启动了第二个操作。使用“await”确保在此上下文上调用另一个方法之前已完成任何异步操作。任何实例成员都不能保证线程安全 我知道这个错误发生在我的GenerateIdentityAsync方法中。 我使用ASP.NET Identity 2.0,因此我在Owin启动类的OnValidate

我确实使用ASP.NET MVC绑定来绑定我的JavaScript文件。当我检查并检查浏览器中的网络选项卡时,当我的捆绑包要加载时,我会看到
500内部服务器错误
。 答复:

在上一个异步操作完成之前,在此上下文上启动了第二个操作。使用“await”确保在此上下文上调用另一个方法之前已完成任何异步操作。任何实例成员都不能保证线程安全

我知道这个错误发生在我的
GenerateIdentityAsync
方法中。 我使用ASP.NET Identity 2.0,因此我在Owin启动类的
OnValidateIdentity
中使用它:

ApplicationManager.cs

public class ApplicationManager : IApplicationManager
{
   // more code
   public Func<CookieValidateIdentityContext, Task> OnValidateIdentity()
   {
      return SecurityStampValidator.OnValidateIdentity<AppUserManager, User, Guid>
      (TimeSpan.FromSeconds(0), GenerateIdentityAsync, identity => Guid.Parse(identity.GetUserId()));
   }

    public async Task<ClaimsIdentity> GenerateIdentityAsync(AppUserManager manager, User user)
    {
      var identity =
        await  CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie).ConfigureAwait(true);
     identity.AddEnumClaim("lastSeenMode", user.LastSeenMode);
     identity.AddClaim(new Claim("emailAddress", user.Email));
     identity.AddClaim(new Claim("displayName", user.DisplayName));
     identity.AddClaim(new Claim("lastseen", user.LastSeen.ToString()));
     return identity;
   }
}
  app.UseCookieAuthentication(new CookieAuthenticationOptions()
  {
        Provider = new CookieAuthenticationProvider()
        {
            OnValidateIdentity = SmObjectFactory.Container.GetInstance<IAppUserManager>().OnValidateIdentity(),
        }
  });
此外,我还测试了
ConfigureAwait(true)
ConfigureAwait(false)
以及不测试
ConfigureAwait(true)
,但没有解决此问题

更新
另外,当我使用时,它说在多个线程中使用单个对象上下文很可能是一个Bug。

此警报仅针对同一个表存在:

[Admin].[UserClaims]
[Admin].[UserLogin]
[Admin].[Roles]
[Admin].[UserRoles]
[Admin].[Users]
我如何解决这个问题


中的更多代码我自己不使用StructureMap,但我发现对于MVC来说,将StructureMap与MVC结合使用的最佳方法是安装软件包(这是最新的StructureMap版本)。
检查一下如何使用它。或文章


将所有现有注册码移动到由软件包安装的DefaultRegistry.cs。现在不要使用HybridHttpOrthReadLocalScope()注册服务。

我自己不使用StructureMap,但我发现对于MVC来说,将StructureMap与MVC结合使用的最佳方法是安装包(这是最新的StructureMap版本)。
检查一下如何使用它。或文章


将所有现有注册码移动到由软件包安装的DefaultRegistry.cs。现在不要使用
HybridHttpOrthReadLocalScope()
进行服务注册。

您在某个地方同时启动了对数据库的两个异步请求。检查您错过使用wait的地方。我没有错过使用
wait
。您可以将post异常调用堆栈添加到问题中吗?@vitaliysmolyakov问题已更新。您如何创建IdentityDbContext?必须为每个请求创建新的。如果多个请求确实共享一个IdentityDbContext实例,那么这就是问题的根源——多个请求可以使用一个上下文同时访问数据库。您在某个地方同时启动了对数据库的两个异步请求。检查您错过使用wait的地方。我没有错过使用
wait
。您可以将post异常调用堆栈添加到问题中吗?@vitaliysmolyakov问题已更新。您如何创建IdentityDbContext?必须为每个请求创建新的。如果多个请求确实共享一个IdentityDbContext实例,那么这就是问题的根源——多个请求可以使用一个上下文同时访问DB。
[Admin].[UserClaims]
[Admin].[UserLogin]
[Admin].[Roles]
[Admin].[UserRoles]
[Admin].[Users]