没有Owin的Asp.Net MVC 5?

问题描述 投票:22回答:4

Mvc 5似乎依赖于Owin,如果你想自己托管或在Mac上运行,那就太棒了。但是我们假设我只想在IIS下运行,就像以前的版本一样,我对Owin提供的东西不感兴趣。默认的“空白”mvc5模板使用owin和其他15个依赖项。我已经尝试逐个删除软件包,但似乎网站不知道如何在不使用Owin的属性的情况下启动。那么,如何在没有Owin的iis下获得ASP.net,mvc 5?

c# iis asp.net-mvc-5 owin
4个回答
38
投票

禁用Owin的简单方法是在web.config文件中,在<appSettings>部分添加:

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

要完全删除Owin,请右键单击您的项目,然后从菜单中单击Manage Nuget Packages。在Manage Nuget Packages窗口的左侧点击Installed Package然后在搜索框类型owin窗口的右侧。

enter image description here按以下顺序卸载软件包:

  • microsoft.aspnet.identity.owin
  • microsoft.owin.host.systemweb
  • microsoft.owin.security.cookies
  • microsoft.owin.security.facebook
  • Microsoft.o win.security.Google
  • microsoft.owin.security.microsoftaccount
  • microsoft.owin.security.twitter

删除microsoft.owin.security.twitter后自动删除其他owin软件包,如果您的机器上没有发生,则自行删除其他软件包。然后删除此包:

  • microsoft.aspnet.identity.entityframework
  • microsoft.aspnet.identity.core

打开web.config文件并从<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">中删除这些部分:

    <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>

删除项目根目录中的Startup.cs文件。打开App_Start folder并删除IdentityConfig.csStartup.Auth.cs文件。打开Controller folder并删除AccountController.csManageController.cs。在Models folder删除所有模特和在View Folder删除Account FolderManage folder

重新启动Visual Studio,然后运行该项目。如果你收到这个错误:

尝试加载应用程序时发生以下错误。 - 找不到包含OwinStartupAttribute的程序集。 - 找不到包含Startup或[AssemblyName] .Startup类的程序集。要禁用OWIN启动发现,请在web.config中添加值为“false”的appSetting owin:AutomaticAppStartup。要指定OWIN启动程序集,类或方法,请在web.config中添加appSetting owin:AppStartup以及完全限定的启动类或配置方法名称。你有两种解决方法:

  1. 打开bin folder,如果有任何Owin assembly,删除所有这些
  2. 或者在<appSettings>部分打开web.config然后添加这个<add key="owin:AutomaticAppStartup" value="false" />

3
投票

默认的mvc5模板使用Identity作为成员资格系统。身份取决于Owin,这就是它被包含在项目中的原因(以及其他几个“可选”包)。如果您创建一个新的空项目并手动安装包Microsoft.Aspnet.Mvc(使用命令Install-Package Microsoft.Aspnet.Mvc),您可以看到没有依赖于Owin。

Obs:您还可以创建一个空项目,其中选中了“为MVC添加文件夹和核心参考”选项。


1
投票

OWIN只是一个标准,它将ASP.net应用程序与IIS分离,因此应用程序可以自托管,以及其他好处,但它并不意味着您无法在IIS中托管它们。


-1
投票

我只是指定完整的路线,它适合我!

Project name: Users.Web
Folders: App_Start
Class name: IdentityConfig

<add key="owin:AppStartup" value="Users.Web.App_Start.IdentityConfig" />
© www.soinside.com 2019 - 2024. All rights reserved.