2016-09-28 8 views
0

私はAureliaアプリケーションをAsp MVC Core 1.0で動作させています。このアプリは、HttpClientを使用してコントローラーアクションを呼び出し、jsonデータを返します。ホームコントローラは、すべてのアクションが含まれている、と私はそうのようにHttpClientを設定します。Aurelia + .Net Core + IIS Webアプリケーションで正しいURLを取得する方法

http.configure(config => { 
     config 
      .useStandardConfiguration() 
      .withBaseUrl('Home/'); 
}); 

Visual Studioでアプリケーションを実行して、すべての作品。 localhost:55475でホストされています。this.http.fetch('GetData')に電話すると、localhost:55475/Home/GetDataにリクエストが送信されます。

IISにデプロイするときに問題が発生します。アプリケーションはデフォルトWebサイトの下にWebアプリケーションとしてデプロイされるため、ルートURLはserver.org/MyAppです。アプリケーションは、罰金を起動するが、私は、コールthis.http.fetch('GetData')を作るとき、それはserver.org/Home/GetData代わりのserver.org/MyApp/Home/GetDataから要求し、明らかになぜMyAppを無視してフェッチ要求される404

にもたらされますか?私は自分の.withBaseUrlにスラッシュを付けていないと思ってURLを相対的に作るだろうが、明らかにそうではない?

+0

私は同じ問題を抱えているので、これをちょうど微調整してください。私は現在、System.baseURLをモジュールに渡して、withBaseUrlの呼び出しのためにプリペンドすることができるかどうかを調べています。しかし、私はちょうど、アプリケーションが、そこからロードされたディレクトリを、作業のベースとして使用していないのはなぜですか。 –

+0

それは基本的に私がやったことです。私は '@ Html.Hidden(" rootUrl "、Url.Content("〜 "))'を私のビューに入れました。私はその値を共有モジュールにロードしました: 'this.rootUrl = $( '#rootUrl')。val();'。次に、私のすべてのapi呼び出しに 'rootUrl'を追加しました。ひどくエレガントではありませんが、機能します。 – Jerrad

答えて

1

私が見つけた解決策は、ブラウザのアドレスバーに入れたURLにあります。あなたのケースでは、server.org/MyAppではなくserver.org/MyApp/を参照すると動作しますか? (余分なスラッシュに注意してください)?それは私のために働いた。

したがって、私が配置する必要があった全体的な修正は、Aureliaをホストしているページの上部に末尾にスラッシュを付けたbase要素を持つことでした。またはあなたは302を使用して、完全なURLにユーザーをリダイレクトすることができることを

<base href="@this.Url.Content("~")/" />

:私は私のindex.cshtmlファイルに次の行でASP.Netコアを使用して追加

<base href="/MyApp/" />

応答。