Asp.net尝试在IHttpHandler类上读取我的http调用的变量报错怎么解决?

发布时间: 2017/3/26 1:38:29
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个工厂,包含的功能,下面给出︰

TestOperation: function(filename) {
    var senddata = {
        filename: filename,
        operation: 'download',
        base: '3',
    };
    return $http({
        method: 'POST',
        url: 'http://' + location.host + '/FtpHandler.ashx',
        data: senddata
    });
}



我正在使用这个,以使我的FtpHandler类下载并从我的ftp服务器保存一个文件。
这个类是这样的

FtpHandler.ashx
<%@ WebHandler Language="C#" CodeBehind="FtpHandler.ashx.cs" Class="TestWebApplication.FtpHandler" %>

FtpHandler.ashx.cs
namespace TestWebApplication
{
    public class FtpHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            var operationType = context.Request.Form["operation"];
            System.Diagnostics.Debug.WriteLine(operationType);
...

这将在我的输出控制台中打印一条空行。为什么我不能正确地得到这个(或其他)变量的值?

解决方法 1:

经过几个尝试,看起来你需要利用 Params 以获取您的数据从您的请求。

将完整的代码︰context.Request.Params["operation"];

Request.Form 解析将是空的因为你不过帐窗体,也不你甚至处理客户端的窗体。你正在处理一个 JavaScript 对象。

我知道, Request.Params 允许您访问请求的键/值对,无论是查询字符串或窗体的集合。

至于为什么使用 $http 模块通过角没有工作,我认为你 HttpHandler 需要也许并不满足的具体要求设置...但是,再一次,我不知道。如果你有兴趣,你可以尝试不同的设置您的请求︰

var req = {
 method: 'POST',
 url: 'http://example.com',
 headers: {
   'Content-Type': //some content-type
 },
 data: { test: 'test' }
}

$http(req).then(function(){...}, function(){...});
官方微信
官方QQ群
31647020