繁体   English   中英

脚本管理器问题,因为针对angularjs的web.config中的重写规则

[英]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重写规则如下的建议这里- 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动态生成的,并且没有被加载,因此在规则中专门列出后,现在就可以加载了。 我不太了解技术,但这对我有用,我相信也会帮助其他人。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM