2009-04-07 2 views
0

Windows Media Player/Silverlight에서 오는 스트리밍 미디어 요청에 사용할 수있는 IHttpHandler를 작성하려고합니다. 즉 (프로토콜 문서에서 촬영)과 같은 원시 HTTP 요청IHttpHandler에서 원래 HTTP 요청 패킷에 액세스

"GET /ms/contoso_100_files/0MM0.wmv HTTP/1.0" 
"Accept: */*" 
"User-Agent: NSPlayer/4.1.0.3925" 
"Host: netshow.micro.com" 
"Pragma: no-cache,rate=1.000000,stream-time=0,stream-offset=0:0,request-context=1,max-duration=0" 
"Pragma: xClientGUID={2200AD50-2C39-46c0-AE0A-2CA76D8C766D}" 

나는 processRequest 메소드에 착륙 할 때, context.Request.Headers 수집 프라 그마 값을 표시하지 않는 것 응답을 의미한다. 또한 동일한 키 (Pragma)를 가진 두 줄이 있으므로 실제로는 절대 수행 할 수 없습니다!

원본 패킷을 가져올 수 있으면 수동으로 구문 분석 할 수 있다고 가정합니다.

그렇다면 내가하고 싶은 일은 HttpWebRequest 유형의 보조 요청을 작성하는 것입니다. 그것은 또한 내가 기대하는 비슷한 사전을 자랑하며, 다른 하나를 덮어 쓰지 않고 두 개의 동일한 pragma 값을 받아 들일 수 없을 것입니다.

내가 누락 된 항목이 있습니까?

답변

0

아니요 프래그머 헤더를 사용하면 전송되지 않을 수도 있습니다. 피들러 (Fiddler)를 사용하여 네트워크 트래픽을 보면서 그들이 당신에게 전송되는지 확인하는 것이 좋습니다.

0

어떻게 Request.Headers에 액세스합니까? NameValueCollection 여러 헤더의 경우를 처리하지만 당신은 그들에 액세스 할 수있는 권한 회원을 사용할 수 있습니다

string[] values = context.Request.GetValues("Pragma"); 

(인덱스 속성은 기본적으로 여러 값이됩니다 join(','...) 수행).

+0

감사합니다. 방금 시도해 보았습니다. HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("http : //localhost/whatever.html"); request.Headers.Add (HttpRequestHeader.Pragma, "Blah1"); request.Headers.Add (HttpRequestHeader.Pragma, "Blah2"); 두 번째 질문 인 John을 해결합니다. –