2016-08-16 23 views
0

私はASP.NET MVC 5(Visual Studio 2015)を学習中で、基本的なMVC Webアプリケーションを作成しました。プロジェクトを作成したときには、「フォルダとコア参照を追加する:」で「MVC」と「Web API」を選択しました。私はまた、認証の下で「Individual User Accounts」を選択しました。 EFを使用していくつかのモデル、コントローラー、およびビューを作成しました。それらは認証と共にうまくいっています。また、私のモデルの1つにAPI機能を追加するために、「Entity Frameworkを使ったアクションを備えたWeb API 2 Controller」を作成しました。再度これはうまく動作します。MVC 5 WebアプリケーションとWeb APIの共有

OAuthをWeb APIで動作させようとしていますが、Tokenを要求するときに問題が発生しました.Webアプリケーションテンプレートにはその部分が付属していないと思います。多くの読んだら、Stack Overflowに関するいくつかの推奨事項を見つけました。通常は、Web APIのために別のプロジェクトを作成する方が良いでしょう。

だから私の質問は以下のとおりです。

私が最も可能性の高い一つのサーバおよび/またはサブドメインと別のWebアプリケーションでWeb APIを展開します。そうであれば、どうしても別々のプロジェクトに参加する必要があります。

2つのプロジェクトを持つ場合、モデルのような一般的なコンポーネントを共有するための最良の方法は何ですか?私のWeb APIでは、Webアプリケーションへの参照を追加し、そのようなWeb API Controllerを作成するか、モデルからコードをコピーしてWeb APIで新しいモデルを作成すべきですか?

答えて

1

のご質問にお答えするには:あなたが別々にそれらを展開しようとしている場合

  1. はい、彼らは別々のプロジェクトにする必要があります。
  2. 一般的な項目を処理するには、ライブラリDLLプロジェクトを作成し、Web APIとWeb Appの両方から参照します。共通コンポーネントを含めることができます。

また、認証にCookieを使用している場合は、ドメインが異なる2つのサイト間でCookieを共有できるようにCORSを設定する必要があります。

+0

私は私のソリューションで新しいクラスライブラリプロジェクトを作成し、モデルを作成し、次にWeb APIとWebアプリケーションの両方でプロジェクトへの参照を追加し、それに対するコントローラを作成しますか? Webアプリケーションでモデルを作成してWeb APIでモデルを参照するよりも、それが優れている理由を説明できますか?認証のために、私はテンプレートのデフォルト設定を使用しているだけで、WebアプリケーションはWeb APIととにかく通信する必要はありません。 – user1624184

+0

共通コードを別の場所に配置することで、Web APIとWeb Appの両方から共通コードを分離することになります。これにより、これらのソリューションの両方から独立してこのコードをテストすることができます。さらに、Web APIプロジェクトがWeb Appプロジェクトと決して衝突しないことを保証します。 –

関連する問題