Mvc 5似乎依赖于Owin,如果你想自己托管或在Mac上运行,那就太棒了。但是我们假设我只想在IIS下运行,就像以前的版本一样,我对Owin提供的东西不感兴趣。默认的“空白”mvc5模板使用owin和其他15个依赖项。我已经尝试逐个删除软件包,但似乎网站不知道如何在不使用Owin的属性的情况下启动。那么,如何在没有Owin的iis下获得ASP.net,mvc 5?
禁用Owin的简单方法是在web.config
文件中,在<appSettings>
部分添加:
<add key="owin:AutomaticAppStartup" value="false" />
要完全删除Owin,请右键单击您的项目,然后从菜单中单击Manage Nuget Packages
。在Manage Nuget Packages
窗口的左侧点击Installed Package
然后在搜索框类型owin
窗口的右侧。
删除microsoft.owin.security.twitter
后自动删除其他owin软件包,如果您的机器上没有发生,则自行删除其他软件包。然后删除此包:
打开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.cs
和Startup.Auth.cs
文件。打开Controller folder
并删除AccountController.cs
和ManageController.cs
。在Models folder
删除所有模特和在View Folder
删除Account Folder
和Manage folder
。
重新启动Visual Studio,然后运行该项目。如果你收到这个错误:
尝试加载应用程序时发生以下错误。 - 找不到包含OwinStartupAttribute的程序集。 - 找不到包含Startup或[AssemblyName] .Startup类的程序集。要禁用OWIN启动发现,请在web.config中添加值为“false”的appSetting owin:AutomaticAppStartup。要指定OWIN启动程序集,类或方法,请在web.config中添加appSetting owin:AppStartup以及完全限定的启动类或配置方法名称。你有两种解决方法:
bin folder
,如果有任何Owin assembly
,删除所有这些<appSettings>
部分打开web.config然后添加这个<add key="owin:AutomaticAppStartup" value="false" />
默认的mvc5模板使用Identity作为成员资格系统。身份取决于Owin,这就是它被包含在项目中的原因(以及其他几个“可选”包)。如果您创建一个新的空项目并手动安装包Microsoft.Aspnet.Mvc(使用命令Install-Package Microsoft.Aspnet.Mvc
),您可以看到没有依赖于Owin。
Obs:您还可以创建一个空项目,其中选中了“为MVC添加文件夹和核心参考”选项。
OWIN只是一个标准,它将ASP.net应用程序与IIS分离,因此应用程序可以自托管,以及其他好处,但它并不意味着您无法在IIS中托管它们。
我只是指定完整的路线,它适合我!
Project name: Users.Web
Folders: App_Start
Class name: IdentityConfig
<add key="owin:AppStartup" value="Users.Web.App_Start.IdentityConfig" />