好吧,所以我在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>
我希望这个对你有用.