使用ASP.NET和JMeter上载文件

时间:2017-03-07 06:15:41

标签: c# asp.net jmeter

我是ASP.NET的新手,但对使用JMeter有一些了解。我的任务是创建一个Web服务,接受通过POST请求上传的文件。

我的控制器

public class TestController : Controller {

    [HttpPost]
    public string Upload(HttpPostedFileBase file) {
        Logger.Debug("Upload Called, Request.Files.Count: " + Request.Files.Count);

        if(model.file != null)
            Logger.Debug("Okay");
        else
            Logger.Debug("Invalid file");

        return "done";
    }
}

我的JMeter采样器 JMeter HTTP request sampler test.csv文件和我的JMeter测试计划放在同一目录下。

但我发现file变量始终为null,而Request.Files.Count始终为0.请帮助,提前致谢!

2 个答案:

答案 0 :(得分:1)

模仿文件上传请求的最简单方法就是使用HTTP(S) Test Script Recorder录制它。有关JMeter配置说明,请参阅Apache JMeter Proxy Step by Step手册。

只需确保您的test.csv文件位于JMeter" bin"在记录上传请求期间,JMeter将自动填充相关的HTTP Request采样器配置。有关详细信息,请参阅Recording File Uploads with JMeter指南。

注意:不要忘记妥善处理VIEWSTATE

等动态参数

答案 1 :(得分:0)

我终于得到了解决方案。

C#Controller

public class TestController : Controller {

    [HttpPost]
    public string Upload() {
        Logger.Debug("Upload Called, Request.Files.Count: " + System.Web.HttpContext.Current.Request.Files.Count);

        if(System.Web.HttpContext.Current.Request.Files.Count > 0)
            Logger.Debug("Okay");
        else
            Logger.Debug("Invalid file");

        return "done";
    }
}

请注意,System.Web.HttpContext.Current.Request代替System.Web.HttpPostedFileBase,而JMeter采样器不需要更改。