ASP Identity GetExternalLoginInfoAsync 总是 return 空

ASP Identity GetExternalLoginInfoAsync always return null

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
     return RedirectToAction("Login");
}

loginInfo 始终为 null,我用 fiddler 检查响应,似乎站点 (Steam) return 是正确的值

"response": {
        "players": [
            {
                "steamid": "76561198057961078",
                "communityvisibilitystate": 3,
                "profilestate": 1,
                "personaname": "Press \"R\" to restart™",
                "lastlogoff": 1435947642,
                "commentpermission": 2,
                "profileurl": "http://steamcommunity.com/id/warheat1990/",
                "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900.jpg",
                "avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900_medium.jpg",
                "avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/598fa035b19342a9e0b26a8115e8ddc5da0cc900_full.jpg",
                "personastate": 1,
                "primaryclanid": "103582791434936111",
                "timecreated": 1327988764,
                "personastateflags": 0
            }
        ]

    }

那为什么我得到的是空值?我从 SO 中遇到同样问题的人那里读了一堆帖子,但到目前为止运气不好。

我们将不胜感激。

所以我得到 null 的原因是因为我在 Startup.Auth.cs

中的 app.CreatePerOwinContext 之前放置了 app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
public void ConfigureAuth(IAppBuilder app)
{
    app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //if you put it here, it won't work
    // Configure the db context, user manager and signin manager to use a single instance per request
    app.CreatePerOwinContext(ApplicationDbContext.Create);
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

    //rest of the code here
}

所以我将其更改为:

public void ConfigureAuth(IAppBuilder app)
{
    // Configure the db context, user manager and signin manager to use a single instance per request
    app.CreatePerOwinContext(ApplicationDbContext.Create);
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

    //rest of the code here
    app.UseSteamAuthentication("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); //works!
}