asp.net - 由于 angularjs 的 web.config 中的重写规则导致的 Scriptmanager 问题
问题描述
我有一个 angulajs 应用程序,它将路由实现为
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when("/home", {
templateUrl: "home.html",
controller: "homeController"
})
.when("/filter", {
templateUrl: "filter.html",
controller: "filterController"
})
我在 asp.net web.config 中有一个重写规则,如下所示 - SO
<rewrite>
<rules>
<rule name="AngularJS" 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="/webmasterpage.html" />
</rule>
</rules>
</rewrite>
使路由在 asp 应用程序中工作,但由于我面临的重写规则
WebResource.axd 和 ScriptResource.axd 中出现意外的令牌 < 错误
并且
ASP.NET Ajax 客户端框架未能为 asp:scriptmanager 加载错误
如果我在 web.config 文件中注释掉重写规则,这个错误就会消失,但是 angularjs 路由将不起作用!以何种方式我们可以编写重写规则,以便我们(asp scriptmanager 和 angularjs 路由)都能正常工作。任何帮助表示赞赏
解决方案
所以在谷歌搜索了很多之后,我终于能够突破同样的问题。在这里分享我的答案,以便将来可以帮助某人。所以我在 web.config 文件中配置了 angular 的规则如下:
<rewrite>
<rules>
<rule name="AngularJS" 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_FILENAME}" pattern="(.*?)\.html$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.js$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.css$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.aspx$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.axd$" negate="true" />
</conditions>
<action type="Rewrite" url="/webmasterpage.html" />
</rule>
</rules>
</rewrite>
你可以在这里注意
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.html$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.js$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.css$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.aspx$" negate="true" />
<add input="{REQUEST_FILENAME}" pattern="(.*?)\.axd$" negate="true" />
我已经特别提到了我想要加载和访问的文件扩展名。.axd是由 asp 动态生成的,并且没有被加载,因此在规则中专门列出后,它现在正在加载。我不太了解技术,但这对我有用,我相信也会帮助其他人。:)
推荐阅读
- apache-spark - Amazon EMR 未分配所有请求的内存
- ffmpeg - 将媒体文件转换为 mp4 时 ffmpeg -i 不起作用
- c# - 如何使用 C# 在系统托盘中显示进度面板?
- java - 不能从静态上下文中引用
- ios - 如何在Swift中的动态角度开关上使线条弯曲?
- selenium-chromedriver - Selenium 属性错误“'WebDriver' 对象没有属性 '_timeout'”
- java - 在同一个 hybris 实例中具有多个 basestore 和 basesite 的 Hybris-Common 代码方法
- javascript - 检查状态中的角色是否与逗号分隔列表中的要求匹配
- javascript - 未捕获的 TypeError:_workboxWindow.Workbox 不是构造函数
- python - ord() 预期字符串,但找到 int