2017-12-11 33 views
0

일부 테스트 :C# Uri를 어떻게 사용합니까?

이 진짜야입니다 :

[Fact] 
    public void UriEqualTest() 
    { 
     //Act 
     var uri1 = new Uri("https://www.baidu.com"); 
     var uri2 = new Uri("https://www.baidu.com/"); 

     var boolResult = uri2.Equals(uri1); 

     //Assert 
     Assert.Equal(uri1, uri2); 
     Assert.True(boolResult);//True 
    } 

이 진짜야입니다 :

[Fact] 
    public void UriUpperEqualTest() 
    { 
     //Act 
     var uri1 = new Uri("https://wWw.bAidu.com"); 
     var uri2 = new Uri("https://www.baidu.com/"); 

     var boolResult = uri2.Equals(uri1); 

     var operatorResult = (uri1 == uri2); 

     //Assert 
     Assert.Equal(uri1, uri2); 
     Assert.True(boolResult);//True 
    } 

이것은 거짓이다 :

[Fact] 
    public void UrlEqualTest() 
    { 
     //Act 
     var uri1 = new Uri("https://www.baidu.com/aaaa/bbbb"); 
     var uri2 = new Uri("https://www.baidu.com/aaaa/bbbb/"); 

     var boolResult = uri2.Equals(uri1); 

     //Assert 
     Assert.Equal(uri1, uri2); 
     Assert.True(boolResult);//False 
    } 

이것은 거짓이다 :

[Fact] 
    public void UrlUpperEqualTest() 
    { 
     //Act 
     var uri1 = new Uri("https://www.baidu.com/AAaa/bbbb"); 
     var uri2 = new Uri("https://www.baidu.com/aAAa/bbbb"); 

     var boolResult = uri2.Equals(uri1); 
     var operatorResult = (uri1 == uri2); 
     //Assert 
     Assert.Equal(uri1, uri2); 
     Assert.True(boolResult);//False 
    } 

마찬가지입니다 :

[Fact] 
    public void UriUpperEqualAndPathTest() 
    { 
     //Act 
     var uri1 = new Uri("https://www.baiDu.com/aaaa/bbbb"); 
     var uri2 = new Uri("https://www.Baidu.com/aaaa/bbbb"); 

     var boolResult = uri2.Equals(uri1); 

     //Assert 
     Assert.Equal(uri1, uri2); 
     Assert.True(boolResult);//True 
    } 

그래서, 호스트는 대소 문자를 구분하지? 그러나 대소 문자를 구분하는 ??

그리고 모든 도트는 대소 문자를 구분하지 않고 대소 문자를 구분하지 않으려면 어떻게해야합니까?

그리고 모든 도트는 대소 문자를 구분하지 않고 대소 문자를 구분하지 않으려면 어떻게해야합니까?

그리고 모든 도트는 대소 문자를 구분하지 않고 대소 문자를 구분하지 않으려면 어떻게해야합니까?

그리고 ASPNET 코어 MVC에서

, 내가 경로를 사용하는 경우

[HttpGet("/private/head")] and [HttpGet("/private/HeAd")] and [HttpGet("/private/head/")]

그것은 오류입니다! 오류는 다음과 같습니다 AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:

+1

가능한 복제본 [ASP.NET MVC에서 대/소문자 구분 라우팅] (https://stackoverflow.com/questions/13022221/force-case-sensitive-routing-in-asp-net-mvc) 중복 가능 – mjwills

+0

import- ---> 중요합니다. 내 영어가 잘 맞지 않아 ...... –

+0

https://stackoverflow.com/help/someone-answers – mjwills

답변

1

https://stackoverflow.com/a/2581418/34092 상태 :

는 지금까지 프로토콜에 관한 한, http://example.com/somethinghttp://example.com/something/은 매우 다르다. 일부 서버에서는 이 그런 식으로 구현되는 경우 하나에서 다른 서버로 리디렉션 될 수 있습니다.

순수 도메인 이름의 경우 항상 슬래시로 끝나는 요청을 으로 보냅니다. (도메인 이름 자체는 그렉 Hewgill하고, 다른 사람이 쓴 것처럼, 의 경로 섹션 HTTP 요청에 포함되지 않습니다. 그것은이다, 그러나, 헤더에 포함되어 있습니다.)

그래서에서 찾고 예 :

var uri1 = new Uri("https://www.baidu.com"); 
    var uri2 = new Uri("https://www.baidu.com/"); 

always sends a request ending with a slash부터 동일합니다. 따라서 그들은 동등합니다.

https://serverfault.com/a/261344 상태 :

이름 DNS에서 해결은 대소 문자를 구분합니다. 혼동을 막기 위해서는 에게 중요합니다. (가 케이스 만 다른 호스트 직후 슬래시 때문에)

var uri1 = new Uri("https://wWw.bAidu.com"); 
    var uri2 = new Uri("https://www.baidu.com/"); 

따라서, 두 동등하다.

확인을 클릭하면 첫 번째 시나리오처럼 보이지만 그렇지 않습니다. 첫 번째 시나리오는 '순수 도메인 이름'(즉, 호스트 직후)이므로 동일한 것으로 간주합니다. 이것은 다릅니다 (즉, 슬래시가 호스트의 직후가 아니라 끝 부분에 있음). 따라서 모든 웹 서버에서 동일하지 않습니다. 따라서 동등하지 않습니다.

var uri1 = new Uri("https://www.baidu.com/AAAaa/bbbb"); 
    var uri2 = new Uri("https://www.baidu.com/aAAa/bbbb"); 

경로 및 쿼리 문자열은 대/소문자를 구분합니다. 따라서 이들은 동일하지 않습니다. 일부 웹 서버/프로그래밍 환경 (예 : ASP.NET MVC)은 대소 문자를 구별하지 않을 수 있지만 사양에 따라 경로 및 쿼리 문자열은 대소 문자를 구분합니다 (일부 웹 서버 은 대소 문자를 구분하므로).

var uri1 = new Uri("https://www.baiDu.com/aaaa/bbbb"); 
    var uri2 = new Uri("https://www.Baidu.com/aaaa/bbbb"); 

유일한 차이점은 호스트의 경우입니다. 따라서 그들은 동등하다.

오류! 오류는 다음과 같습니다. AmbiguousActionException : 복수 조치 이 일치했습니다. 다음 작업은 경로 데이터를 일치하는 모든 제약 조건이 만족했다 : ASP.NET MVC는 는 일반적으로 대소 문자를 구분하지 않기 때문에

이입니다. Force case-sensitive routing in ASP.NET MVC이 문제의이 부분에 유용 할 수 있습니다.

+0

emmm ..... 매우 감사합니다! –