由于 web.config 中 angularjs 的重写规则导致脚本管理器问题
Scriptmanager issue because of rewrite rule in web.config for angularjs
我有一个实现路由的 angulajs 应用程序
作为
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when("/home", {
templateUrl: "home.html",
controller: "homeController"
})
.when("/filter", {
templateUrl: "filter.html",
controller: "filterController"
})
我在 asp.net web.config 中有一个重写规则如下
正如这里所建议的——
<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 应用程序中工作,但由于我面临的重写规则
Unexpected token < error in WebResource.axd and ScriptResource.axd
还有
ASP.NET Ajax client-side framework failed to load error for
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 动态生成的,没有加载,所以在规则中明确列出后,它现在正在加载。
我不太了解技术细节,但这对我有用,我相信也会帮助其他人。 :)
我有一个实现路由的 angulajs 应用程序 作为
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when("/home", {
templateUrl: "home.html",
controller: "homeController"
})
.when("/filter", {
templateUrl: "filter.html",
controller: "filterController"
})
我在 asp.net web.config 中有一个重写规则如下
正如这里所建议的——
<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 应用程序中工作,但由于我面临的重写规则
Unexpected token < error in WebResource.axd and ScriptResource.axd
还有
ASP.NET Ajax client-side framework failed to load error for 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 动态生成的,没有加载,所以在规则中明确列出后,它现在正在加载。 我不太了解技术细节,但这对我有用,我相信也会帮助其他人。 :)