ASP.NET 5和Angular Routing不能在dnx rc1上运行

时间:2016-02-16 22:44:26

标签: angularjs asp.net-mvc-5 dnx

您好我有一个在ASP.NET 5中构建的项目(dnxcore50和dnx451)。它正在处理我的AngularJS脚本的请求。当我构建项目时,我正在使用Microsoft beta 5依赖项并使用重写规则将所有请求发送到index.html,因此我的角度路由可以正常工作。但今天我不得不升级到rc1依赖项,现在我的重写不起作用,我只是在我的路线上得到404。这个新库将这些奇怪的代码行添加到我的web.config

  <handlers>
  <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" forwardWindowsAuthToken="false" startupTimeLimit="3600" />

有没有办法如何设置我的路由以便它适用于角度,例如,如果我去localhost / shop它会将它重定向到index.html,我的角度路由将接管。

3 个答案:

答案 0 :(得分:4)

我正在进行类似的设置,而且我在 Startup.cs 中的配置

    app.UseDefaultFiles();

    app.UseStaticFiles();

    app.UseIISPlatformHandler();

以及 web.config system.webServer 中的重写规则,需要能够同时提供web api和index.html angular app:

    <rewrite>
      <rules>
        <!--Redirect selected traffic to index -->
        <rule name="Index Rule" 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>

您可能需要与您自己的规则类似的东西

答案 1 :(得分:0)

我认为有一种比在路由设置中使用url rewrite更好的方法(因此根本不需要重写url)。例如。我这样做了:

    app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "api",
                template: "api/{controller}/{action}");

            routes.MapRoute(
                name: "angular",
                template: "{*url}",
                defaults: new {controller = "Home", action = "Index"},
                constraints: new {url = new DoesNotContainConstraint(".", "api/") });                
        });

这确保所有/ api都转到控制器,其他所有内容都转到索引。我必须自己做DoNotContainConstraint以确保正确处理错误网址的文件和api,但这很容易。

答案 2 :(得分:0)

如果要将IIS 5 / ASP.NET Core与IIS一起使用,则需要安装HttpPlatformHandler。 Here是一个很好的循序渐进指令,显示如何安装Http Platform Handler,配置IIS并将IIS发布到IIS。