asp.net mvc使用html5mode和路由托管角度应用程序

前端之家收集整理的这篇文章主要介绍了asp.net mvc使用html5mode和路由托管角度应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好吧,所以我在asp.net mvc 5中托管一个 angularjs,并在我的角应用程序中使用html5mode(true)来摆脱url中的所有哈希标志.
但是,一切都很好,我目前的设置如下所示:

RouteConfig.cs:

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

因此,当我导航到http:// url / app / myangularroute时,我的Ng / Index操作返回包含ng-view容器的视图,并且角度app现在处于活动状态并使用提供的路径

现在,我的问题是,当我导航到http:// url / app /它返回一个dir listning不允许的错误,我无法理解.因为angular参数设置为optional,我的索引操作不应该返回吗?

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

我可以使用url作为当前格式,但无需提供可选参数,例如http:// url / app /

此外,它只是一个角度应用程序,没有其他mvc视图比index.cshtml包装器.

This guy seems to get it to work,but I can’t see his mvc routes

解决方法

尝试在web.config sytem.webserver设置中添加此项.
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>

编辑:

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

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

EDIT2:

我完全忘记了这个问题,但现在我才意识到问题可能是你没有配置你的IIS服务器来使用Html5Mode,看看这个:https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-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>

我希望这个对你有用.

猜你在找的asp.Net相关文章