WebRequest을 사용하는 Silverlight (v3) 응용 프로그램에서 Silverlight 응용 프로그램과 동일한 웹 사이트의 웹 페이지에 HTTP POST 요청을합니다. 이 HTTP 요청은 같은 웹 사이트의 다른 페이지로 302 (리다이렉트)를 되 찾으며, HttpWebRequest은 자동으로 (according to the documentation)를 따라야합니다.HttpWebRequest는 Internet Explorer에서만 302에 대해 404를 반환합니다.
요청을 만드는 코드에 대한 특히 특별한 것이 (이 대체 붙박이 실버 HTTP 스택을 사용하도록 구성되지 않은 브라우저의 HTTP 스택을 사용) 없습니다 :
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}?name={1}&size={2}", _UploadUrl, Uri.EscapeUriString(Name), TotalBytes));
request.Method = "POST";
이 파이어 폭스에서 잘 작동 모두 및 크롬; Silverlight는 POST HTTP 요청을 만들고 302 응답을 받고 지정된 리디렉션 URL에 대한 GET HTTP 요청을 자동으로 수행하여 나에게 반환합니다. HTTP 요청이 계속 진행되는 것을보기 위해 Fiddler를 사용했기 때문에이 사실을 알았습니다. 그러나 Internet Explorer (v8)에서 Silverlight는 POST HTTP 요청을 수행 한 다음 404 오류 코드와 함께 WebException을 throw합니다!
피들러를 사용하여 Silverlight/Internet Explorer가 요청에 대한 302 상태 코드를 성공적으로 반환했으며 Silverlight에서 얻은 404 상태 코드 (및 관련 WebException)가 내가 브라우저 스택을 통해 수행되는 HTTP 요청은 제한으로 인해 200 또는 404 만 반환 할 수 있음을 알 수 있습니다. 진짜 질문은 입니다. Internet Explorer가 다른 브라우저와 마찬가지로 리디렉션을 따르지 않는 이유는 무엇입니까?
미리 도움을 청하십시오!
EDIT : Silverlight 클라이언트 HTTP 스택을 사용하지 않는 것이 좋습니다. 브라우저의 세션에 쿠키가 포함되어 있지 않은 것으로 알고 있기 때문에 ASP.NET 인증 쿠키가 포함되어 있습니다. Silverlight 컨트롤에 의한 HTTP 요청에 첨부해야합니다.
EDIT 2 : 나는 POST 요청을 할 때만 Internet Explorer가이 동작을한다는 것을 발견했습니다. GET 요청이 성공적으로 리디렉션됩니다. 이것은 Post-Redirect-Get 스타일에서 얼마나 많은 웹 사이트가 현재 일을하고 있는지 고려하면 꽤 나쁜 행동처럼 보입니다.
도움이된다면이 이상한 동작을 나타내는 간단한 demo VS2008 solution을 만들었습니다. 여기에는 기본 ASP.NET MVC 1 프로젝트와 Silverlight 3 프로젝트가 포함되어 있습니다. 웹 사이트에서 SilverlightControlTestPage.html 페이지로 이동하여 문제의 실제 상황을 확인하십시오.
리디렉션 된 URL은 POST 된 To와 Xap의 출처가 동일한 서버의 리소스를 가리 킵니다. – AnthonyWJones
Chrome과 Firefox는 자격 증명을 다르게 처리 할 수 있습니다. 신임 정보가 있습니까? 요청 된 URL이 익명 또는 인증 된 요청을 수락합니까? HTTP 코드에 대한 서버 액세스 로그를 확인 했습니까? – JoeBilly
클라이언트 HTTP 처리 기능을 사용할 수 있습니까? 그렇게하면 모든 상태 코드에 액세스 할 수 있습니다. http://msdn.microsoft.com/en-us/library/cc838250(v=VS.95).aspx – feroze