上传较大文件时出现CORS错误

时间:2015-10-28 18:51:41

标签: angularjs http asp.net-web-api cors

我正在使用带有c#web api且启用了CORS的角度Web项目。

除非我将文件上传到异步任务,否则我的所有CORS都能在所有调用上正常工作。这是我要参考的方法。

[HttpPost]
public async Task<HttpResponseMessage> UploadFile(){
    //code
}

我得到的错误是:

否&#39;访问控制 - 允许 - 来源&#39;标头出现在请求的资源上。

显然我甚至不允许调用我的UploadFile方法。

在小文件上,呼叫有效,并且“访问控制 - 允许 - 来源”#39;响应中存在,但是在较大的文件上有60 mb +它不是。

我正在使用XMLHttpRequest来进行web api调用。

var xhr = new XMLHttpRequest();

        if (xhr.upload) {
            xhr.upload.filename = $scope.files[i].name;
            xhr.upload.addEventListener('progress', function (evt) {
                var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                $scope.uploadCompleteValues[this.filename] = percentComplete;
                console.log(percentComplete + '%');
                if (!$scope.$$phase) { $scope.$apply(); } 
            }, false);
        }

        xhr.onreadystatechange = function (ev) {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    // Success! Response is in xhr.responseText
                    console.log('success upload of file');



                    }
                } else {
                    // Error! Look in xhr.statusText
                    console.log('failed to upload file');
                    console.log('error : ', xhr.statusText);
                    $scope.$root.$broadcast('NOTIFY-ERROR-1btn', {
                        text: 'Artwork failed to save.  ',
                        buttons: [
                            {
                                text: 'Ok'
                            }
                        ]
                    });
                }
            }
        }

        xhr.open('POST', webapiUrl + 'artwork/UploadFile', true);
        var cookie = $cookieStore.get('authToken');
        if (cookie) {
            xhr.setRequestHeader("auth-token", cookie.token);
        } else {
            $location.path('login');
        }


        var data = new FormData();
        data.append('OrderlineId', $scope.orderline.Id);
        data.append($scope.files[i].name + 1, $scope.files[i]);
        xhr.send(data);

在通过xhr.send发送文件之前,跨源资源共享请求是否可能超时?

1 个答案:

答案 0 :(得分:2)

确保您的web.config中的Max允许内容长度设置得足够高,否则您将收到错误消息。检查您的IIS日志,看看是否存在问题。

      <requestFiltering>
    <requestLimits maxAllowedContentLength="4294967295" />
    <!-- bytes -->
  </requestFiltering>