使用ASP.NET 5将原始字符串转换为HttpRequest / HttpResponse?

时间:2015-10-19 18:31:07

标签: c# asp.net asp.net-core

我们正在处理原始请求和响应。我们正在寻找从套接字读取原始HTTP消息,并将其转换为Microsoft.AspNet.Http.HttpRequest对象。我们希望响应相同,即将原始文本转换为可根据需要进行操作的Microsoft.AspNet.Http.HttpResponse对象。

问题: 如何使用ASP.NET 5中的新类将原始字符串转换为HttpRequest / HttpResponse对象?

编辑: 好的,所以上面显然不够清楚。这是一段代码片段,可以解读我们之后所做的事情:

static void Main()
{
    string http = @"CONNECT www.google.com:443 HTTP/1.0" + "\r\n" +
                "Host: www.google.com:443" + "\r\n" +
                "Content-Length: 0" + "\r\n" +
                "Proxy-Connection: Keep-Alive" + "\r\n" +
                "Pragma: no-cache" + "\r\n" +
                "\r\n\r\n";
     Microsoft.AspNet.Http.HttpRequest request = ParseHttp(http);
}

static Microsoft.AspNet.Http.HttpRequest ParseHttp(string http)
{
    //Magic goes here
}

2 个答案:

答案 0 :(得分:2)

首先创建一个new DefaultHttpContext()。这将为您设置所有收藏。然后,您可以根据需要设置属性。 https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNet.Http/DefaultHttpContext.cs#L34

我没有一个简单的示例供您实际解析请求,但我可以向您展示一个我使用HttpRequestMessage&来自客户端的HttpResponseMessage:https://github.com/Tratcher/HttpClient/blob/dev/src/Microsoft.Net.Http.Client/HttpConnection.cs#L29-L41

答案 1 :(得分:0)

你看过GitHub上的aspnet repo中的Proxy实现吗?

https://github.com/aspnet/Proxy

你可能从那里得到一些想法。我猜你想做这样的事情:

https://github.com/aspnet/Proxy/blob/dev/src/Microsoft.AspNetCore.Proxy/ProxyMiddleware.cs#L70