2009-03-27 4 views
2

Я пытаюсь использовать объект HttpWebRequest в Silverlight 2.0, чтобы выполнить «POST».Указанный метод не поддерживается httpwebrequest - Silverlight

После возвращения из метода BeginGetStream я в конечном итоге со следующей ошибкой:

сообщение: «Указанный метод не поддерживается.»
StackTrace: «в System.Net.BHWRAsyncResult.get_AsyncWaitHandle()»

Вот некоторые примеры код: Обратите внимание, я использовал скрипач, чтобы увидеть, если что-либо посылаются через провод и нет никакой сетевой активности.

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://someurl")); 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     req.Accept = "text/plain, */*"; 
     req.Headers["X-Requested-With"] = "XMLHttpRequest"; 

     AsyncCallback callBack = new AsyncCallback(streamResponse); 

     req.BeginGetRequestStream(callBack, null); 

Спасибо, Dave

ответ

0

Я просто побежал в этом некоторое время назад. В верхней части головы:

1) clientaccesspolicy.xml/crossdomain.xml не находится на сервере, на который вы звоните. Как вспышка, silverlight не будет разговаривать с доменом, у которого его нет.

1.1) Ошибочно ли регистрируется журнал fiddler 404? Если этого не произойдет, вы не увидите неудачные попытки Silverlight пытаться получить эти файлы политик.

2) В противном случае отправка пользовательского заголовка может нарушить ситуацию.

+0

Спасибо за ответ. Fiddler покажет 404, поэтому я вполне уверен, что это не проблема. Я также попытался вытащить пользовательский заголовок, но до сих пор не доставлял радости. – 2009-03-30 14:33:52

4

Я только нашел одно решение этой проблемы. HTTP-клиент должен знать Content-Length, чтобы заполнить значение HTTP-заголовка Content-Length. Клиент не может начать запрос до того, как его длина станет известной. Когда вы получаете RequestStream WebRequest can'not знать, сколько байтов вы отправите на сервер. Вы должны закрыть поток для фиксации Content-Length и только после закрытия RequestStream. Вы можете вызвать BeginGetResponse. Странно, что это не сделано внутри WebRequest. Надеюсь, что это помогает, Дмитрий

+0

Этот ответ решил эту проблему для меня, спасибо за подсказку! – MiloDC

Смежные вопросы