好的,所以我在asp.net mvc 5中托管了angularjs,并html5mode(true)在我的angular应用程序中使用摆脱了网址中的所有哈希符号。一切正常,但是,使用我当前的设置,如下所示:
html5mode(true)
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/myangularroute
现在,我的问题是,当我导航到 http://url/app/ 它时,返回一个目录列表不允许的错误,我无法理解。由于angle参数设置为可选参数,是否应该返回索引操作?
http://url/app/
我可以以某种方式完全避免使用“ app”,仍然可以使我的角度应用程序正常工作吗?我尝试了一些重写规则,但这给了我很多错误,因为我正在使用MVC捆绑和压缩功能。
我可以将url设置为当前的格式,而不需要提供可选参数,例如 http://url/app/
另外,它只是一个有角度的应用程序,除了index.cshtml包装程序外没有其他mvc视图。
尝试将其添加到您的web.config sytem.webserver设置中。
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>
我希望这个对你有用。