1>오늘 친구가 질문을 했습니다.
파일 컨트롤을 사용하여 사진, 문서, 기타 파일의 경로를 읽을 때는 오류가 발생하지 않지만 비디오 파일(예: rmvb 등)을 읽을 때는 페이지를 표시할 수 없다는 오류가 발생하는 이유는 무엇입니까?
코드 조각은 다음과 같습니다.
개인 무효 btnUpFiles_Click(개체 전송자, System.EventArgs e)
{
문자열 경로명=this.File1.PostedFile.FileName.ToString();
Response.Write(경로이름);
}
2>문제 해결을 시작합니다.
경로 문자열을 구하는 게 문제인 줄 알고 경로와 파일명을 먼저 가로채고 그다음에 파일 확장자를 가로채서 문자열로 저장했는데 늘 오류가 나더군요. 코드 조각은 다음과 같습니다.
string fullname=this.File1.PostedFile.FileName.ToString();//전체 경로 가져오기
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//경로와 파일 이름을 가져오고 파일 접미사를 제거합니다.
세션["firstname"]=firstname;//세션에 저장
char [] Spliter={'.'};//문자열을 분할하는 데 사용되는 구분 기호
string [] fileName=this.File1.PostedFile.FileName.Split(split);//전체 경로 분할의 각 부분을 배열에 저장합니다.
Session["lastname"]=fileName[fileName.Length-1];// 저장 세션으로서의 배열의 마지막 요소(이름 접미사)
Response.Redirect("test.aspx");//테스트를 위해 이 페이지에 전달하고 싶습니다.
위의 방법은 여전히 실패하며, 오류의 원인은 문자열과는 전혀 관련이 없는 것 같습니다.
3>네티즌 "@@"은 httpRuntime 문제라고 제안했습니다(감사합니다).
문제 해결 방법: web.config의 <system.web></system.web>에 다음 코드를 추가하세요.
<httpRuntime 실행Timeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" 활성화VersionHeader="true"/>
4>MSDN의 설명:
httpRuntime은 asp.net 응용 프로그램에 대한 요청을 처리하는 방법을 결정하기 위한 구성 asp.net http 런타임 설정입니다.
ExecutionTimeout: 요청을 실행하는 데 허용되는 최대 시간 제한(초)을 나타냅니다.
maxRequestLength: ASP.NET에서 지원하는 최대 파일 업로드 크기를 나타냅니다. 이 제한은 사용자가 서버에 많은 수의 파일을 전달함으로써 발생하는 서비스 거부 공격을 방지하는 데 사용될 수 있습니다. 지정된 크기는 KB 단위입니다. 기본값은 4096KB(4MB)입니다.
useFullyQualifiedRedirectUrl: 클라이언트 리디렉션이 정규화되었는지(일부 모바일 컨트롤에 필요한 " http://server/path " 형식) 또는 상대 리디렉션이 대신 클라이언트에 전송되는지 여부를 나타냅니다. True이면 정규화되지 않은 모든 리디렉션이 자동으로 정규화된 형식으로 변환됩니다. false가 기본 옵션입니다.
minFreeThreads: 새 요청을 실행하는 데 허용되는 최소 여유 스레드 수를 지정합니다. ASP.NET은 처리를 완료하기 위해 추가 스레드가 필요한 요청에 대해 지정된 수의 스레드를 여유 공간으로 유지합니다. 기본값은 8입니다.
minLocalRequestFreeThreads: 새 로컬 요청을 실행하도록 허용된 ASP.NET에서 유지 관리하는 최소 여유 스레드 수를 나타냅니다. 이 스레드 수는 일부 요청이 처리 중에 로컬 호스트에 하위 요청을 하는 경우 로컬 호스트에서 들어오는 요청을 위해 예약되어 있습니다. 이렇게 하면 웹 서버에 재귀적으로 다시 진입하여 발생할 수 있는 교착 상태를 방지할 수 있습니다.
appRequestQueueLimit: ASP.NET이 응용 프로그램에 대해 대기열에 넣을 최대 요청 수를 나타냅니다. 요청을 처리할 여유 스레드가 충분하지 않으면 요청이 대기열에 추가됩니다. 대기열이 이 설정에 지정된 제한을 초과하면 "503 - 서버 사용량이 너무 많습니다" 오류 메시지와 함께 들어오는 요청이 거부됩니다.
활성화VersionHeader: ASP.NET이 버전 헤더를 출력해야 하는지 여부를 나타냅니다. Microsoft Visual Studio 2005에서는 이 속성을 사용하여 현재 사용 중인 ASP.NET 버전을 확인합니다. 프로덕션 환경의 경우 이 속성은 필요하지 않으며 비활성화할 수 있습니다.