一尘不染

带有html5mode和路由的asp.net mvc托管Angular应用

angularjs

好的,所以我在asp.net mvc
5中托管了angularjs,并html5mode(true)在我的angular应用程序中使用摆脱了网址中的所有哈希符号。一切正常,但是,使用我当前的设置,如下所示:

RouteConfig.cs:

        routes.MapRoute(
            name: "Default",
            url: "app/{angular}",
            defaults: new { controller = "Ng", action = "Index", angular= UrlParameter.Optional }
        );

所以,当我浏览到 http://url/app/myangularroute 我的 吴/索引 操作返回包含NG-
View容器和角应用视图现在是活动的,并与所提供的路线工作

现在,我的问题是,当我导航到 http://url/app/
它时,返回一个目录列表不允许的错误,我无法理解。由于angle参数设置为可选参数,是否应该返回索引操作?

我可以以某种方式完全避免使用“
app”,仍然可以使我的角度应用程序正常工作吗?我尝试了一些重写规则,但这给了我很多错误,因为我正在使用MVC捆绑和压缩功能。

我可以将url设置为当前的格式,而不需要提供可选参数,例如 http://url/app/

另外,它只是一个有角度的应用程序,除了index.cshtml包装程序外没有其他mvc视图。


阅读 190

收藏
2020-07-04

共1个答案

一尘不染

尝试将其添加到您的web.config sytem.webserver设置中。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>

编辑

尝试更改RouteConfig.cs,如下所示:

    routes.MapRoute(
        name: "Default",
        url: "app/{*.}",
        defaults: new { controller = "Ng", action = "Index" }
    );

编辑2:

我已经完全放弃了这个问题,但是现在我才意识到也许问题是您尚未将IIS服务器配置为可与Html5Mode一起使用,请查看以下内容:https : //github.com/angular-ui/ ui-router / wiki
/常见问题解答#如何配置您的服务器以使用html5mode

具体来说这部分:

Azure IIS重写:

<system.webServer>
  <rewrite>
    <rules> 
      <rule name="Main Rule" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />                                 
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

我希望这个对你有用。

2020-07-04