asp.net httprequest가 null 일 수 있습니까? CurrentExecutionFilePath는 어떻습니까?
-
22-08-2019 - |
문제
우리는 프로덕션 서버에서 이상한 버그를 받고 있습니다. 스택 추적이 있지만 선 번호는 없으므로 버그가있는 방법을 알고 있지만 정확한 선은 아닙니다. "객체 참조가 객체 인스턴스로 설정되지 않은 객체 참조"에 대한 불만입니다. 뭔가 널입니다.
코드를 살펴본 후, 내가 볼 수있는 두 명의 잠재적 인 범인은 다음과 같은 두 개의 연속 줄입니다.
string currentPath = this.Request.CurrentExecutionFilePath;
string[] parts = currentPath.Split('/');
요청이 null이거나 요청의 currentExecutionFilePath가 null 인 경우 던질 것입니다. 나는 이것이 일어날 수있을 때 (또는 심지어) 실제로 명확하지 않습니다. 내가 여기서 잘못된 나무를 짖고 있습니까? (이 코드는 페이지 라이프 사이클의로드 부분 중에 실행중인 것 같습니다).
해결책
릴리스 빌드에 PDB 출력이 활성화되어 있습니까?
그렇다면 스택 추적에서 줄 번호를 얻으려면 PDB를 프로덕션 서버에만 배포하면됩니다.
(PDB와 DLL이 일치해야합니다)
다른 팁
첫 번째 스레드에서 스레드를 시작하면 요청 및/또는 httpcontext가 null 일 수 있습니다. (비동기 처리 등)
이상하게도 나는 원인을 찾을 수 없다면 생산 서버에서 null httprequest 오류 (많은 많은) 시간을 보았습니다.
나는 그것이 당신에게 전혀 쓸모가 없다는 것을 알고 있지만 단지 연대를 쓰고 있습니다 :)
내가 절반 기억할 수있는 한 가지 잠재적 인 것은 IIS와 관련이있는 것이었지만 루트를 /default.aspx에 맵핑하지 않는 것이었지만 다시 한번, 이것은 오래 전부터 이루어 졌으므로이 강력한 도움이되지 않는이 강요에 너무 많은 관심을 기울이지 마십시오 !!!