gpt4 book ai didi

c# - Microsoft.Owin.Host.SystemWeb 并且仍然在上下文中找不到 owin.Environment 项目

转载 作者:太空狗 更新时间:2023-10-29 17:43:18 33 4
gpt4 key购买 nike

我已经阅读了很多关于此的帖子,但仍然无法使其正常工作。我正在使用 Visual Studio 2013。我创建了一个新的 MVC 5 项目,并认为使用新的 facebook 登录集成会很酷。它在我的 PC 上的 IIS Express 中运行良好。

但是当我将它上传到生产服务器时,我不断收到非常烦人的消息“在上下文中找不到 owin.Environment 项目”。

这是我所做的。

  1. 我从未更改过我的项目或程序集的名称。
  2. 程序集名称是 Wodivate
  3. 命名空间是Wodivate
  4. 我有默认的 Startup.cs 类,其中包含以下内容:

    using Microsoft.AspNet.Identity;
    using Microsoft.Owin;
    using Microsoft.Owin.Security.Cookies;
    using Owin;
    using System.Web.Http;

    [assembly: OwinStartupAttribute(typeof(Wodivate.Startup))]
    namespace Wodivate
    {
    public partial class Startup
    {
    public void Configuration(IAppBuilder app)
    {
    ConfigureAuth(app);
    }

    }
    }
  5. 在 App_Start 中有一个 Startup.Auth.cs 文件,其中包含:

    using Microsoft.AspNet.Identity;
    using Microsoft.Owin;
    using Microsoft.Owin.Security.Cookies;
    using Owin;

    namespace Wodivate
    {
    public partial class Startup
    {
    // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
    public void ConfigureAuth(IAppBuilder app)
    {
    // Enable the application to use a cookie to store information for the signed in user
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login")
    });
    // Use a cookie to temporarily store information about a user logging in with a third party login provider
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

    // Uncomment the following lines to enable logging in with third party login providers
    //app.UseMicrosoftAccountAuthentication(
    // clientId: "",
    // clientSecret: "");

    //app.UseTwitterAuthentication(
    // consumerKey: "",
    // consumerSecret: "");

    var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions()
    {
    AppId = "xxxxxxxxxxxxxxxxxxx",
    AppSecret = "xxxxxxxxxxxxxxxxxxxxxxxxx"
    };
    facebookOptions.Scope.Add("email"); //We want to get user's email information by adding it in scope.
    app.UseFacebookAuthentication(facebookOptions);

    //app.UseGoogleAuthentication();
    }
    }
    }
  6. 我的 Web.config 文件包括:

    <add key="owin:AppStartup" value="Wodivate.Startup, Wodivate" />
    <add key="owin:AutomaticAppStartup " value="false" />
  7. 我还确保关注了 No owin.Environment item was found in the context - only on server 上的帖子并安装了 Microsoft.Owin.Host.SystemWeb

还有其他人坚持这个吗?我已经碰壁 3 天了。

最佳答案

我遇到了同样的问题,这是由 IIS 设置引起的。

我的 IIS 部署有一个顶级站点,下面有几个应用程序。您应该确保您站点级别的“应用程序设置”不会与您的应用程序冲突。

在我的例子中,我在站点级别有“owin:AutomaticAppStartup = false”,它被我的应用程序继承了。

总结:

  1. 打开 IIS 管理器
  2. 选择服务器 -> 应用程序设置。确保在此级别没有 owin 冲突。
  3. 选择站点 -> 应用程序设置。确保在此级别没有 owin 冲突。

enter image description here


编辑:我发现您可以简单地在 web.config 中添加以下 appSetting 来覆盖任何潜在的继承冲突。不过,我建议先了解是否存在冲突,这样您才能做出有根据的更改。

<add key="owin:AutomaticAppStartup" value="true"/>

关于c# - Microsoft.Owin.Host.SystemWeb 并且仍然在上下文中找不到 owin.Environment 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23276144/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com