简体   繁体   English

调用Web Api的ashx处理程序时出现404错误

[英]404 error in calling ashx handler of Web Api

I have an ImageUploadHandler.ashx handler in my WebApi Project. 我的WebApi项目中有一个ImageUploadHandler.ashx处理程序。 Source code is available here . 源代码可在此处获得 I am trying to call my handler from my AngularJs project. 我正在尝试从AngularJs项目中调用处理程序。 Here is the code: 这是代码:

 var serviceBase = 'http://baseDomain/';
var plupload = null;
$scope.uploadedFiles = [];

$scope.fileUpload = {
    url: serviceBase + 'ImageUploadHandler.ashx',
    options: {
        multi_selection: true,
        drop_element: "pluploadDropzone",
        chunk_size: '200kb',
        runtimes: 'html5,flash,silverlight,html4',
        browse_button: "pluploadDropzone",
        container: "pluploadContainer",
        max_file_size: '3mb',
        mime_types: [{ title: 'Allowed', extensions: 'jpeg, jpg, png, gif' }]
    },
    callbacks:
    {
        filesAdded: function (uploader, files) {
            plupload = uploader;

            for (var i = 0 ; i < files.length ; i++) {
                var file = files[i];
                $scope.uploadedFiles.push(file);
                plupload.start();
            }
        }
    }
}

Html: HTML:

<div id="pluploadContainer" class="uploader">
 <a ng-hide="uploadedFiles.length >= 10" id="pluploadDropzone"
    plupload="fileUpload.url"
    plupload-options="fileUpload.options"
    plupload-callbacks="fileUpload.callbacks"
    class="dropzone html5Dropzone" style="width: 464px;">
          <span ng-hide="uploadedFiles.length >= 10" class="instructions html5Instructions">
                Drag &amp; Drop Your Files Here!
          </span>

   </a>
   <div class="m-images">
        <ul class="images">
            <li ng-repeat="file in uploadedFiles" class="image">
                <div class="thumbnail">
                      {{ file.name }}
                 </div>
             <a ng-click="deleteImage(file)" class="delete">&times;</a>
             </li>
        </ul>
   </div>

I am getting 404 error while calling this handler, Here is the error snapshot: 调用此处理程序时出现404错误,这是错误快照:

在此处输入图片说明

This did the trick: 这达到了目的:

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ClearHeaders();
            string origin = context.Request.Headers["Origin"];
            context.Response.AppendHeader("Access-Control-Allow-Origin",
                string.IsNullOrEmpty(origin) ? "*" : origin);
            string requestHeaders = context.Request.Headers["Access-Control-Request-Headers"];
            context.Response.AppendHeader("Access-Control-Allow-Headers",
                string.IsNullOrEmpty(requestHeaders) ? "*" : requestHeaders);
            context.Response.AppendHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
        }

Plus I have to register my handler in web.config 另外,我必须在web.config注册我的处理程序

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
    <handlers>
        <add name="ImageUploadHandler" verb="*" path="ImageUploadHandler.ashx" type="JetAdz.WebApi.ImageUploadHandler, JetAdz.WebApi, Version=1.0.0.0, Culture=neutral" />
    </handlers>
</system.webServer>

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

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