2016-10-20 6 views
0

で働いていない私のブートアップAngular2コンポーネントは、ルーティングテーブルを持っている角度2ルータのパスがIIS

@RouteConfig([ 
     { path: '/welcome', name: 'Welcome', component: WelcomeComponent, useAsDefault: true }, 
     { path: '/search', name: 'Search', component: SearchComponent }, 
     { path: '/confirm', name: 'Confirm', component: ConfirmComponent }, 
     { path: '/office', name: 'Office', component: OfficeComponent } 
    ]) 

ノードライトからアップ務めたときSPAのindex.htmlを、全アプリで<base href="/">が完璧に動作があります。

私は現在AzureのIIS上で実行しており、ルーティングとは別に動作しています。ルートのデフォルトルートは機能しますが、他のすべてのナビゲーションは404で失敗します。

私は自分のリンクに[routerLink]="['Search']"を使用しています。

S/Oにはいくつかの類似の質問がありますが、解決策はありません。

+0

**質問**: 'useAsDefault:true'には長い時間以降に廃止されました。あなたは古いルータを使用していますか? –

+0

おそらく - 私はボックスvs2015スタートアップファイルを使用しています - 私は一見を持っています - ありがとう –

+0

どのAngular2バージョンを使用していますか?この '@RouteConfig()'は何ヶ月もなくなっています。サーバーはHTML5のpushStateをサポートする必要がありますhttp://stackoverflow.com/questions/31415052/angular-2-0-router-not-working-on-reloading-the-browser IISの設定を微調整する必要があります。 Expressはこれをデフォルトでサポートしています。 –

答えて

0

[RouterLink]ディレクティブをルートアプリケーションコンポーネントに追加し、タグ内の[routerLink]で使用されているすべてのリンクが問題を修正したことを確認してください。私はおそらく助けにならなかったAngular 2の古いバージョンにも入っていました。

0

角2ルーティング(ハッシュ付き)はIISで問題なく動作します。すべてのリクエストを角度アプリのindex.htmlファイルにリダイレクトするデフォルトのURL書き換えルールを作成してください。ルールはJS必要なファイルと実際の角度アプリのURL(すなわちのindex.htmlまたはindex.htmlに#/ {ルート値}以外のindex.htmlをするためにすべての要求をリダイレクトします

EX:<ルール> <ルール名=」デフォルト "> <一致URL ="(。*).js | index.html(。*) "否定=" true "/ > <アクションタイプ="書き換え "url ="/index.html "/ > </rule > < /ルール>

IISで角2ルーティング(ハッシュなし)は動作しません。純粋なHTMLアプリケーションの場合、IISは着信要求をルーティングし、そのページがその場所に存在しない場合は、エラーページへのリクエストを指示します。

.Net MVCアプリケーションの場合は、すべての着信リクエストURLを処理して角度インデックスビューにリダイレクトするデフォルトルートを作成できます。

MVCアプリケーションの例ルート:

routes.MapRoute(
    name: "Angular", 
    url: "{*url}", 
    defaults: new { controller = "Home", action = "Index", id =  UrlParameter.Optional }, 
    constraints: new { url = new AppFeatureUrlConstraint() } 


public class AppFeatureUrlConstraint : IRouteConstraint 
    { 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
    if (values[parameterName] != null) 
    { 
     var url = values[parameterName].ToString(); 
     if (url.StartsWith("angular/", StringComparison.InvariantCultureIgnoreCase)) 
      return true; 
     else 
      return false; 
    } 
    return false; 
    } 
} 
関連する問題