相关疑难解决方法(0)

HttpMethod和HttpRequest的RequestType有什么区别?

所述的HttpRequest类定义了两个属性:

HttpMethod:

获取客户端使用的HTTP数据传输方法(如GET,POST或HEAD).

public string HttpMethod { get; }  
Run Code Online (Sandbox Code Playgroud)

客户端使用的HTTP数据传输方法.

RequestType:

获取或设置客户端使用的HTTP数据传输方法(GET或POST).

public string RequestType { get; set; }
Run Code Online (Sandbox Code Playgroud)

表示客户端发送的HTTP调用类型的字符串.

这两个属性有什么区别?我什么时候想要使用另一个?哪个是检查以查看客户端使用的数据传输方法的正确方法?

文档表明HttpMethod将返回使用的动词:

例如GET,POST或HEAD

RequestType上的文档似乎只表示两个可能值中的一个:

GET或POST


我使用动词的随机抽样进行测试,这两个属性似乎都支持所有动词,并且都返回相同的值:

测试:

Client Used    HttpMethod    RequestType
GET            GET           GET
POST           POST          POST
HEAD           HEAD          HEAD
CONNECT        CONNECT       CONNECT
MKCOL          MKCOL         MKCOL
PUT            PUT           PUT
FOOTEST        FOOTEST       FOOTEST
Run Code Online (Sandbox Code Playgroud)

有什么区别:

  • HttpRequest.HttpMethod
  • HttpRequest.RequestType

什么时候应该使用另一个?

asp.net iis http httphandler httprequest

26
推荐指数
1
解决办法
6611
查看次数

构建一个HttpContext进行测试,如何指定HttpRequest是一个POST?

我正在为一个以HttpContext作为参数的方法编写一些单元测试.我想在请求是POST时测试行为是否符合预期.

在创建System.Net.HttpWebRequest时,很容易设置方法,但在创建System.Web.HttpRequest时,我无法看到指定方法的方法,这是HttpContext中使用的方法.

有任何想法吗?

对于上下文,该方法由httphandler调用,如果请求不是POST,则应该抛出405.我知道我可以使用web.config中的Verbs属性过滤允许的方法,但是我会在未来阻止某人改变动词属性以允许其他方法,在这种情况下我希望处理程序要小心它本身.

目前使用的助手方法:

    private HttpContext GetHttpContext(string requestUrl)
    {
        var httpRequest = new HttpRequest("", requestUrl, "");            
        var stringWriter = new StringWriter();
        var httpResponce = new HttpResponse(stringWriter);
        return new HttpContext(httpRequest, httpResponce);
    }
Run Code Online (Sandbox Code Playgroud)

c# testing unit-testing httphandler httprequest

10
推荐指数
1
解决办法
2553
查看次数

标签 统计

httphandler ×2

httprequest ×2

asp.net ×1

c# ×1

http ×1

iis ×1

testing ×1

unit-testing ×1