我在MVC 5中使用角度5,我在这里使用角度路由。一切正常,但是当浏览器地址栏上有一个角度路由URL并且我正在做F5时它会给出错误 - 无法找到资源。
我确定它是因为这个URL模式与我的MVC路由不匹配,但它与角度路由匹配。
怎么解决这个?
解决这个问题很简单。在导入模块中执行此操作:RouterModule.forRoot(routes,{useHash:true})。在这种情况下,散列后的Url不再被发送到您的服务器端。有关更多信息,请访问here。
你可能需要为IIS安装UrlRewriter模块,然后你需要在web.config
的system.webServer/rewrite/rules
中拥有以下内容
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/Home/Index?url={UrlEncode:{R:0}}" />
</rule>
重写规则的细节虽然取决于您的应用程序。我正在我的Home/Index
视图中连接我的角度根html节点。如果您采用不同的方式,则必须更新它以路由到您期望的位置。