Implement IHttpRequestFeature.RawTarget.

This commit is contained in:
Cesar Blum Silveira 2016-05-25 17:07:02 -07:00
parent f5bd95b93f
commit 55d2ef02b1
3 changed files with 22 additions and 4 deletions

View File

@ -62,6 +62,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
private string _query;
private string _pathBase;
private string _path;
private string _rawTarget;
private IPAddress _remoteIpAddress;
private IPAddress _localIpAddress;
private int? _remotePort;
@ -207,6 +208,19 @@ namespace Microsoft.AspNetCore.Server.WebListener
set { _query = value; }
}
string IHttpRequestFeature.RawTarget
{
get
{
if (_rawTarget == null)
{
_rawTarget = Request.RawUrl;
}
return _rawTarget;
}
set { _rawTarget = value; }
}
string IHttpRequestFeature.Scheme
{
get

View File

@ -296,15 +296,15 @@ namespace Microsoft.Net.Http.Server
return _sslStatus != SslStatus.Insecure;
}
}
/*
internal string RawUrl
public string RawUrl
{
get
{
return _rawUrl;
}
}
*/
public Version ProtocolVersion
{
get

View File

@ -51,6 +51,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
Assert.Equal("/basepath", requestInfo.PathBase);
Assert.Equal("/SomePath", requestInfo.Path);
Assert.Equal("?SomeQuery", requestInfo.QueryString);
Assert.Equal("/basepath/SomePath?SomeQuery", requestInfo.RawTarget);
Assert.Equal("HTTP/1.1", requestInfo.Protocol);
// Server Keys
@ -87,7 +88,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
[InlineData("/basepath/", "/basepath", "/basepath", "")]
[InlineData("/basepath/", "/basepath/", "/basepath", "/")]
[InlineData("/basepath/", "/basepath/subpath", "/basepath", "/subpath")]
[InlineData("/base path/", "/base%20path/sub path", "/base path", "/sub path")]
[InlineData("/base path/", "/base%20path/sub%20path", "/base path", "/sub path")]
[InlineData("/base葉path/", "/base%E8%91%89path/sub%E8%91%89path", "/base葉path", "/sub葉path")]
[InlineData("/basepath/", "/basepath/sub%2Fpath", "/basepath", "/sub%2Fpath")]
public async Task Request_PathSplitting(string pathBase, string requestPath, string expectedPathBase, string expectedPath)
@ -106,6 +107,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
Assert.Equal(expectedPath, requestInfo.Path);
Assert.Equal(expectedPathBase, requestInfo.PathBase);
Assert.Equal(string.Empty, requestInfo.QueryString);
Assert.Equal(requestPath, requestInfo.RawTarget);
// Trace identifier
Assert.NotNull(requestIdentifierFeature);
@ -132,6 +134,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{
var requestInfo = httpContext.Features.Get<IHttpRequestFeature>();
Assert.Equal("/%2F", requestInfo.Path);
Assert.Equal("/%252F", requestInfo.RawTarget);
return Task.FromResult(0);
}))
{
@ -165,6 +168,7 @@ namespace Microsoft.AspNetCore.Server.WebListener
{
Assert.Equal(expectedPath, requestInfo.Path);
Assert.Equal(expectedPathBase, requestInfo.PathBase);
Assert.Equal(requestPath, requestInfo.RawTarget);
// Trace identifier
Assert.NotNull(requestIdentifierFeature);