加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 将Angular与MVC 5捆绑在一起后出现格式错误的Coo

发布时间:2020-12-16 09:40:49 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC5项目,我正在使用角度,并收到以下错误: Error: malformed URI sequenceoh/h.cookies@https://controlpanel.abc.com/bundles/controlPanelAngularv=c7IsPcEqfC9w7vlO0f2C635w9XFObG3zp4KjeFBEh-c1:1:18254g@https://controlpanel.abc.com/bundles
我有一个MVC5项目,我正在使用角度,并收到以下错误:

Error: malformed URI sequence
oh/h.cookies@https://controlpanel.abc.com/bundles/controlPanelAngularv=c7IsPcEqfC9w7vlO0f2C635w9XFObG3zp4KjeFBEh-c1:1:18254
g@https://controlpanel.abc.com/bundles/controlPanelAngular?v=c7IsPcEqfC9w7vlO0f2C635w9XFObG3zp4KjeFBEh-c1:1:35522
k/s<@https://controlpanel.abc.com/bundles/controlPanelAngular?v=c7IsPcEqfC9w7vlO0f2C635w9XFObG3zp4KjeFBEh-c1:1:34445
de/u/h.promise.then/c@https://controlpanel.abc.com/bundles/controlPanelAngular?v=c7IsPcEqfC9w7vlO0f2C635w9XFObG3zp4KjeFBEh-c1:1:48272

只有在部署和生产网站时才会出现此错误.

我认为这与.net捆绑的方式有关,但我不确定.

我的包看起来像:

bundles.Add(new ScriptBundle("~/bundles/controlPanelAngular").Include(
  "~/Scripts/angular/dist/angular.min.js","~/Scripts/angular/dist/ui-bootstrap-angular.min.js","~/Scripts/angular/dist/master.js"
));

其中master.js是我的应用程序的连接文件(使用grunt构建).我不太了解捆绑过程甚至不知道在哪里看.我已经阅读了有关该过程的文档,但它没有提供有关此类问题的任何帮助.人们在谷歌上发现的唯一问题是他们的角度不是“缩小友好”,但我的是.我使用内联语法(angular.module(‘module’).controller(‘ctrl’,[‘$injector’,函数($injector))所以它不是那样的.

我的代码不使用decodeURIComponent,encodeURIComponent,angular routing service,html5Mode,$location,cookies或任何我能想到的会导致此错误的内容.我有一个导航服务,可以调用几次:

angular.module('core.service').factory('navigatorService',['$window',function ($window) {
  return {
    redirect: function (newLocation) {
      $window.location.href = newLocation;
    }
  };
}]);

这是我唯一一次访问网址.我没有使用url参数.有一个页面,我甚至需要一个,但由于MVC构建url的方式我通过@ViewBag传递它,而不是在角度解析它:

ng-init="init(@(ViewBag.categoryId));"

该项目的架构师希望我们所有人都使用asp动作来生成URL,这样如果位置发生变化,我们的url会更新.

创建了一个内联工厂:

<script type="text/javascript">
angular.module('core.service').factory('mvcRouterService',function () {
    return {
        getCategoryUrl: function () { return '@Url.Action("GetCategory","Categories")'; }
    };
});
</script>

这就是我用来构建ajax调用的所有url的内容.

使用如下:

angular.module('module').factory('genericAjax',['$http','$injector',function ($http,$injector) {
  var mvcRouterService = $injector.get('mvcRouterService');
    return {
      getCategory: function (categoryId) {
        var data = {
          categoryId: categoryId
        };
      return $http.post(mvcRouterService.getCategoryUrl(),data).then(function (result) {
        return result.data;
      });
    }
   };
 }]);

我还发现几个链接正在讨论一个与此类似的问题:

https://github.com/ivpusic/angular-cookie/issues/28

但那些是从一年前开始的,现在修复已经合并.

此外,如果我从@部分复制并粘贴任何这些网址,它们都会在浏览器中解析,如果这很重要的话

我取消了所有文件并获得了更准确的堆栈跟踪,仍然无法弄清楚可能导致这种情况的原因:

"Error: malformed URI sequence
Browser/self.cookies@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:4811:33
sendReq@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:8813:1
$http/serverRequest@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:8539:25
processQueue@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:12078:25
scheduleProcessQueue/<@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:12094:36
 $RootScopeProvider/this.$get</Scope.prototype.$eval@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:13278:25
$RootScopeProvider/this.$get</Scope.prototype.$digest@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:13090:37
$RootScopeProvider/this.$get</Scope.prototype.$apply@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:13382:33
bootstrapApply@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:1494:20
invoke@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:4101:17
bootstrap/doBootstrap@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:1493:25
bootstrap@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:1512:13
angularInit@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:1406:45
@https://controlpanel.abc.com/Scripts/angular/dist/angular.js:24416:9

解决方法

如果有人好奇我添加了一个try catch到角度代码周围的错误,并调整错误以尝试追踪更具体的错误.我最终发现这个格式错误的cookie是我们的一些用户电脑上的谷歌分析cookie.不确定为什么角度无法处理错误.这是_utmz cookie

https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读