문제

Server.MapPath()에서 이상한 점을 발견했습니다.끝에 공백이 있는 폴더가 있으면 다음과 같은 결과가 나타납니다.

HTTP예외:경로를 매핑하지 못했습니다.

이것은 잘 작동합니다:Server.MapPath("/Folder1/Folder2/item.jpg")

이것은 잘 작동합니다:Server.MapPath("/Folder1/ Folder2/item.jpg")

이것은 잘 작동합니다:Server.MapPath("/Folder1/Fol der2/item.jpg")

실패했습니다!:Server.MapPath("/Folder1/Folder2 /item.jpg")

끝에 있는 공간은 실패하고 다른 곳에서는 실패하지 않는 이유를 누군가 나에게 설명할 수 있습니까?

메모: 폴더가 존재하지 않습니다.

도움이 되었습니까?

해결책

당신 때문에 해서는 안 된다:

파일이나 디렉터리 이름을 공백이나 마침표로 끝내지 마십시오.기본 파일 시스템에서는 이러한 이름을 지원할 수 있지만 Windows 셸 및 사용자 인터페이스에서는 지원하지 않습니다.그러나 이름의 첫 번째 문자로 마침표를 지정할 수 있습니다.예를 들어 ".temp"입니다.

문제는 방법에서 비롯됩니다 FileUtil.IsSuspiciousPhysicalPath(string physicalPath, out bool pathTooLong), 비교를 수행합니다.

string.Compare(physicalPath, Path.GetFullPath(physicalPath), StringComparison.OrdinalIgnoreCase) != 0;

Path.GetFullPath() 디렉터리 및 파일 이름에서 후행 공백을 잘라냅니다(호출하기 때문에). Path.NormalizePath() 그렇게 함) 호출을 통해 발견할 수 있습니다. Path.GetFullPath(@"C:\Foo \Bar.txt") 예를 들어.이는 공백이 포함된 원래 경로와 일치하지 않으므로 메서드는 다음을 반환합니다. true 따라서 경로가 의심스러운 것으로 식별된 후 Server.MapPath 예외가 발생합니다.

다른 팁

Mappath 메서드는 지정된 상대 경로를 서버의 해당 실제 디렉토리에 매핑합니다.이 방법은 반환 값이 유효하거나 서버에 존재하는지 여부를 확인하지 않습니다.Directory.exists () 또는 file.exists () 메소드를 사용하여 디렉토리 또는 파일이 이미 존재하는지 확인해야합니다.

if (File.Exists(Server.MapPath(file)) 
.

또한 다음 방법에 대한 invlid 문자는 다음과 같습니다.

별표 (*)

물음표 (?)

각도 브래킷 (<또는>) 쉼표 (,)

콜론 또는 세미콜론 (: 또는;) 단일 인용구 또는 이중 인용문 ( '또는 ")
오른쪽 사각형 브래킷 (])
더블 슬래시 (// 또는 \)

도움이되기를 바랍니다.

편집

Visual Studio 2010을 Microsoft .NET 소스 코드로 단계로 설정하십시오

PHASE POST를 사용하여 .NET FRAMWORK 코드를 디버깅 한 후 .NET FRAMWORK 코드를 디버깅 한 후 .NET FRAMWORK에서 실제로 핸드 워크의 절대 경로를 얻으려면 PRAMWORK 파일과 프레임 워크의 파일과 메소드를 수행 한 후에 절대 경로를 얻으려면 전화를 알아 냈습니다.

파일 - 시스템 \ Web \ httpserverutility.cs \ 1477467 \ httpserverutility.cs.cs. 방법 -mappath

파일 - \ system \ web \ virtualpath.cs \ 1477467 \ virtualpath.cs * 방법 * - 생성

파일 - 시스템 \ Web \ httpRequest.cs \ 1599819 \ httprequest.cs 방법 -mappath

그러나 PATH가 / folder1 / folder2 / file.cs 일 때 / folder1 / folder2 / file.cs 경로가 아니라 reut.cs가 아니라 reutn null 객체가 아니면 reut.nex를 반환하는 것으로 나타났습니다.

Framwork에서 단계를 밟고 을보고 싶습니다.

어떤 방식 으로든 좋은 질문이 있습니다.하지만이 질문에 대한 Anwser는 Framewok 파일을 디자인하는 Microsoft 사람들 만 Microsoft 사람들이 제공 할 수 있습니다.


문제는 폴더를 찾을 수 없으며 유효합니다. 유효하며 파일 시스템 에서이 폴더를 찾을 수 없습니다.

기본적으로 Windows 파일 시스템에서 모든 폴더를 찾지 못합니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top