web-dev-qa-db-ja.com

System.WebをフルフレームワークのASP.Net Coreで使用できますか

さまざまな.Netバージョンに基づいてサーバーサイトを実行しています。

サイトの1つは.Net 4.6およびASP.Net MVC 5.xxを実行しています

Razorの新しい構文を使用するには、このサイトをアップグレードして、.Net 4.6およびASP.Net Coreを使用します。

私たちはサイトでFormsAuthenticationを使用しており、ユーザーがサイト間を移動できるように引き続き使用します。 (サイトの1つはFormsAuthenticationを実行するSharePointサイトです)

ASP.Net CoreはSystem.Webの何も使用していないことを理解していますが、コントローラーから(ログイン中にFormsAuthentication Cookieを作成するため)およびHttpModuleからそれを使用してCookieを検証する必要があります。

ASP.Net Coreをフルフレームワークで実行しているサイトからsystem.webを使用する方法の例を見つけることができませんでした。 project.jsonにsystem.webの依存関係を追加できませんでした。

質問。

  1. このようなセットアップからsystem.webを使用することは可能ですか?

  2. System.Web.FormsAuthenticationがASP.NET MVC 6から利用できるように、system.webに依存関係を追加するにはどうすればよいですか(Controllers/httpモジュール)

15
TheTechArch

System.Web dllの使用は、System.Webの使用と同じではありません。 System.WebパイプラインはいずれもASP.NET Coreアプリケーションに対して実行されないため、実行しようとしていることを実行できません。

6
davidfowl

それはあなたが考える方法で動作しない場合があります。完全なフレームワークに対して.Net Core MVCを使用する場合、System.Web名前空間が存在し、技術的に呼び出すことができますが、希望どおりには機能しません。その理由は、Asp.Net CoreとSystem.Webのリクエストパイプラインがまったく異なるためです。たとえば、Asp.Net Core MVCを使用する場合、リクエストが来たときからHttpContextオブジェクトをチェックすると、期待されるすべての情報が入力されますが、System.Webオブジェクトを使用して現在のリクエストをチェックすると、現在のリクエストはありません。これは、現在の要求がSystem.Webパイプラインを介して受信されなかったためです。必要に応じて、.Net Coreの「パイプライン」から入ってきました。したがって、.Net Core MVCを使用している場合は、System.Webで提供されているものではなく、そのフレームワークのツールとアプローチに固執する必要があります。

ただし、reallyが必要な場合は、System.Web.dllを参照することが可能です。 VS2015を使用している場合、System.Web.Dllのコピーを取得し、それを参照を確立するために、nugetパッケージでラップする必要があります。こちらを参照してください 。dll core 1.0 visual studio referly external dll VS2017RCにはアルファツールがあり、NuGetパッケージでラップする必要がなくなりますが、マシンにインストールするのに苦労しました。個人的にそれを保証します。 更新: VS2017には、Asp.Net Core用の優れたツールがあり、完全なフレームワークDLLを参照しています。

10
Ron C