2016-12-05 13 views
1

私は助けが必要です。 私はAsp.netコアでangular2を開発し始め、すべてが完璧でした。 すべての404リクエストをindex.htmlにリダイレクトするために、このコードをStartupクラスで使用します。Asp.net 4.5でAngular2ルーティング

app.Use(async (context, next) => 
     { 
      await next(); 

      if (context.Response.StatusCode == 404 
       && !Path.HasExtension(context.Request.Path.Value)) 
      { 
       context.Request.Path = "/index.html"; 
       await next(); 
      } 
     }); 

しかし、私はasp.net 4.5に戻る必要があり、今はルーティングに大きな問題があります。 Owin Startupクラスで同様のコードを使用しようとしましたが、問題は解決しませんでした。

すべてのリクエストをindex.htmlに移動するにはどうすればよいですか? 一例:/ logoutにリダイレクトするリンクがありますが、このコードではapp.moduleは/ logoutが表示されず、アプリケーションのホームページにリダイレクトされます。最後の段落でASP 4.5(https://angular.io/docs/ts/latest/cookbook/visual-studio-2015.html) とangular2使用する方法のチュートリアルで

は言う:

このアプリケーションは、角ルータを使用した場合、ブラウザの更新が 404を返すことができます - ページが見つかりません。アドレスバーを見てください。 には、ナビゲーションURL(「ディープリンク」).../ /index.html以外のパスが含まれていますか?

これらの リクエストに対してindex.htmlを返すようにサーバーを設定する必要があります。それまでは、ナビゲーションパスを削除してもう一度更新してください。

どのようにするには? ありがとうございました!

答えて

1

あなたがこの問題を解決するために、index.htmlページにすべてをリダイレクトすることができ、ここで私は私のプロジェクトの一つに使用される構成コードだ:

<rewrite> 
    <rules> 
    <rule name="RedirectEverything" stopProcessing="true"> 
     <match url=".*" /> 
     <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" /> 
     </conditions> 
     <action type="Rewrite" url="/index.html" /> 
    </rule> 
    </rules> 
</rewrite> 

はあなたのweb.configファイル内system.webseverセクションの下にこれを追加します。

+0

ありがとう、あなたは天才です! – Djanko

関連する問題