2016-12-05 72 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? 舉一個例子:我有鏈接重定向到/註銷,但現在這個代碼app.module沒有看到/註銷,我重定向到應用程序的主頁。

在教程如何與ASP 4.5(https://angular.io/docs/ts/latest/cookbook/visual-studio-2015.html) 在最後一段用angular2說:

如果該應用程序使用的路由器角,刷新瀏覽器可以 返回404 - 找不到網頁。看看地址欄。它是否 包含導航網址(「深層鏈接」)...除/或 /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> 

下的system.websever中添加該在你的web.config

+0

謝謝你,你是天才! – Djanko