Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在为HttpContext.Current设置HttpRequest请求正文_C#_Asp.net Mvc - Fatal编程技术网

C# 正在为HttpContext.Current设置HttpRequest请求正文

C# 正在为HttpContext.Current设置HttpRequest请求正文,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在测试类中对HttpContext进行单元测试,如下所示,但找不到为该对象设置请求体的方法 有什么办法吗?所以HttpContext.Current.Request.GetBufferedInputStream();将返回我设置的正文字符串的字节 [TestMethod()] public void GetRequestStringTest2() { string filename = ""; string url = "http://

我试图在测试类中对HttpContext进行单元测试,如下所示,但找不到为该对象设置请求体的方法

有什么办法吗?所以
HttpContext.Current.Request.GetBufferedInputStream()
;将返回我设置的正文字符串的字节

   [TestMethod()]
    public void GetRequestStringTest2()
    {
        string filename = "";
        string url = "http://www.localhost.com";
        string queryString = "";
        HttpRequest request = new HttpRequest(filename, url, queryString);
        // TODO: set request body here
        // string requestBody = "request-test-123";
        StringBuilder sb = new StringBuilder("response-test-123");
        StringWriter writer = new StringWriter(sb);
        HttpResponse response = new HttpResponse(writer);
        HttpContext.Current = new HttpContext(request, response);
        string requestString = HttpUtilities.GetRequestString();
        Assert.IsNotNull(requestString);
        Assert.AreEqual("request-test-123", requestString);
    }

 public static string GetRequestString()
        {
            if (HttpContext.Current != null)
            {
                Stream stream = HttpContext.Current.Request.GetBufferedInputStream();
                new StreamReader(stream).ReadToEnd();
                StreamReader bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
                bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
                string requestString = bodyStream.ReadToEnd();
                return requestString;
            }

            throw new InvalidOperationException("HttpContext.Current is not available.");
        }

有,但这并不容易

为此,需要从HttpRequest调用方法
internalvoid SetRawContent(HttpRawUploadedContent rawContent)

问题是,您无法从外部程序集调用内部方法,但是有一些方法可以绕过此方法: