문제

httphandler를 사용하여 ASP.NET 웹 응용 프로그램에서 QuickTime 비디오를 iPhone으로 스트리밍하려고합니다. IIS 5.1 (Windows XP)에서 웹 응용 프로그램을 호스팅 할 때 비디오 플레이어가 열리고 '서버가 올바르게 구성되지 않습니다'오류가 표시됩니다. 그러나 IIS 7.5 (Windows 7)를 사용할 때 비디오는 정상적으로 재생됩니다.

프로덕션 환경은 IIS 6.0을 실행하고 있으며 동일한 문제가 발생하여 모바일 사파리를 통해 iPhone에서 비디오를 재생하려고 시도하면 위의 오류가 표시됩니다.

HTTP 헤더를 확인했는데 두 서버간에 실제로 동일하게 보입니다 (예 : 섬기는 사람 분명히 다른 순서로 나타나는 것을 제외하고는 분명히 다릅니다).

에 따르면 이 스레드 Google 그룹의 경우 '수락 범위 : 바이트'헤더를 추가하면 도움이 될 수 있지만, 이로 인해 우리에게는 차이가 없습니다. 또한 운이없는 ETAG 헤더를 추가했습니다.

파일을 전송하는 데 실제로 담당하는 코드는 다음과 같습니다.

Context.Response.Buffer = true;
Context.Response.ContentType = "video/x-m4v";

Context.Response.AppendHeader("Content-Disposition", "filename=\"Video.m4v\"");
Context.Response.AppendHeader("Content-Length", "23456789");

Context.Response.AppendHeader("Accept-Ranges", "bytes");
Context.Response.AppendHeader("ETag", GetETag(path));

Context.Response.TransmitFile(path);

파일이 올바르게 작동하는 것으로 보이며 모든 데스크톱 브라우저에서 비디오 파일이 올바르게 재생되는 것과 Windows 7에서 IIS 7.5에서 호스팅 할 때 비디오 파일이 올바르게 재생되는 코드입니다. IIS 5.1 또는 IIS 6.0에서 호스팅되는 ASP.NET 웹 응용 프로그램이있는 위의 코드.

다른 사람이 이와 같은 경험을 하고이 일을하기 위해 내가 할 수있는 일에 대한 아이디어를 얻었습니까?

도움이 되었습니까?

해결책

응답을 설정하는 이유는 무엇입니까?

서버가 HTTP 범위 요청을 지원하는지 확인하지 않는 한 "허용 범위"헤더를 추가 할 수 없습니다. 클라이언트 플레이어가 범위 요청에 대한 지원을 요구하고 서버가 처리를 거부하면 요청이 거부되는 것이 논리적으로 보입니다.

Fiddler를 역 프로파일로 사용하고 iPhone이 범위 요청을하는지 확인할 수 있습니다.http://www.fiddler2.com/fiddler/help/reverseproxy.asp

다른 팁

약간의 검색 후, 나는 기사를 발견했다 ASP.NET의 범위 별 요청 내가 가진 정확한 문제를 설명합니다. 구현 rangerequesthandlerbase 이 사이트의 클래스 (기존 프로젝트 구조에 적합한 약간의 수정 사항이있는)는 문제를 해결 한 것으로 보이며 이제 IIS5/6에서 비디오 재생이 올바르게 작동합니다.

@eric- 당신의 의견이 올바른 방향으로 멍청한 것처럼 당신의 대답을 발전 시켰습니다. 단순히 '허용 범위'헤더를 추가하는 것만으로는 충분하지 않으며 (IIS7에서 작동 함에도 불구하고) 범위 요청을 처리하고 올바른 데이터가 전송되도록 HTTP 처리기를 수정해야했습니다.

Fiddler와 같은 것을 사용하여 서버에서 나오는 정확한 HTTP 응답을 노출하십시오. iPhone 브라우저와 일치하도록 클라이언트의 사용자 에이전트 문자열을 퍼지하고 (또는 Safari를 사용합니까?) IIS 5.1 및 7.5의 출력을 비교하십시오. 분명히 응답 스트림은 동일하지 않거나 두 가지 모두에서 작동 할 것입니다.

훌륭한 도구 인 Netmon을 사용할 수도 있으며 iPhone 자체로 테스트 할 수 있습니다.

죄송합니다. 당신에게 구체적인 답이 없지만, 당신은 이것으로 당신의 손을 더럽 히아야 할 것 같아요.

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