2017-03-01 2 views
0

ASP.NET Core Web APIとASP.NET Core MVCアプリケーションを含むVisual Studio 2015ソリューションがあります。ASP.NET MVC + Web APIの実行:ルートの取得

MVCアプリケーションでAPIを使用する予定で、両方が同時に実行されています。

例えば、APIはlocalhost:60170上で実行されていて、私は次のように"api/[controller]"にルーティングされたコントローラを持っている:

namespace JobManager.WAPI.Controllers 
{ 
    [Route("api/[controller]")] 
    public class ValuesController : Controller 
    { 

、どのように私はAPIに私のMVCアプリケーション内のルートを得るのですか、ハードコーディングなしAPIへのパス、つまりlocalhost:60170

+0

[Hyprlinkr](https://github.com/ploeh/Hyprlinkr)を使用できます。 – NightOwl888

+0

ASP.NET Core Web APIのようなものはありません。 MVCとWeb Apiがコアに統合されました。 –

+0

@ NightOwl888:ここでうまくいくとは思わない。この問題は、ユーザーが2つの別々のプロジェクトを作成し、それらの間でルートを共有したいと考えているようです。 –

答えて

1

コントローラには、APIメソッドとMVCメソッドの両方を使用できます。

あなたが最初Startup.csにあなたのデフォルトのMVCのルートを定義することができます。

コントローラクラスで
 // mvc 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

、例えば、コントローラクラス内の特定のAPIメソッドを飾るためにそれを使用し、代わりに、コントローラの属性[Route("api/[controller]")]を削除:MVC方式については

[Route("api/[controller]/XYZ/{..}")] 

public IActionResult ABC(..){ 

} 

、普通のようにそれらを使用する:

[HttpGet] 

public async Task<IActionResult> Index(..){ 

} 

localhostアドレスをハードコードしないでください。

+0

私は理解したとは思わない。私はAPIポートを参照することなく、APIメソッドにどのようにアクセスできますか? – manatttta

+0

申し訳ありませんが、私は意図を誤解しました。私のソリューションでは、APIサービスとMVC Webフロントエンドの両方の部分を処理する1つのプロジェクトを持つことができます。 –