web-dev-qa-db-ja.com

OwinなしのAsp.Net MVC 5?

Mvc 5はOwinに依存しているようです。Owinは、自己ホストしたりMacで実行したりする場合に最適です。しかし、以前のバージョンと同じようにIISの下で実行したいだけで、Owinが提供するものには興味がありません。デフォルトの「空白」mvc5テンプレートはowinと15の他の依存関係を使用しますパッケージを1つずつ削除しようとしましたが、Owinの属性を使用せずに開始する方法をサイトが知らなかったようです。

22
Andy

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.owin.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.csおよびStartup.Auth.csファイルを削除します。 Controller folderを開き、AccountController.csManageController.csを削除します。 Models folderですべてのモデルを削除し、View FolderAccount FolderおよびManage folderを削除します。

Visual Studioを再起動し、その後プロジェクトを実行します。このエラーが発生した場合:

アプリの読み込み中に次のエラーが発生しました。 -OwinStartupAttributeを含むアセンブリが見つかりません。 -Startupまたは[AssemblyName] .Startupクラスを含むアセンブリが見つかりません。 OWINスタートアップディスカバリを無効にするには、web.configにappSetting owin:AutomaticAppStartupを「false」の値で追加します。 OWINスタートアップアセンブリ、クラス、またはメソッドを指定するには、web.configでappSetting owin:AppStartupを完全修飾されたスタートアップクラスまたは構成メソッド名で追加します。あなたはそれを解決する2つの方法があります:

  1. bin folderを開き、Owin Assemblyがあれば、それらをすべて削除します
  2. または、<appSettings>セクションでweb.configを開き、この<add key="owin:AutomaticAppStartup" value="false" />を追加します
38

デフォルトのmvc5テンプレートは、Identityをメンバーシップシステムとして使用します。 IdentityはOwinに依存するため、Owinがプロジェクトに含まれる理由は(他のいくつかの「オプション」パッケージとともに)です。新しい空のプロジェクトを作成し、パッケージMicrosoft.Aspnet.Mvcを手動でインストールする場合(コマンドInstall-Package Microsoft.Aspnet.Mvc)Owinに依存していないことがわかります。

Obs:「MVCのフォルダーとコア参照を追加する」オプションをオンにして空のプロジェクトを作成することもできます。

3

OWINは単なる標準であり、ASP.netアプリをIISから切り離します。したがって、アプリはセルフホストできるなどの利点がありますが、IISでホストできないという意味ではありません。

1
ryudice