Просто добавляю, почему и когда использовать Invoke ().
И Invoke (), и BeginInvoke () направляют указанный вами код в поток диспетчера.
Но в отличие от BeginInvoke (), Invoke () останавливает ваш поток до тех пор, пока диспетчер не выполнит ваш код. Возможно, вы захотите использовать Invoke (), если вам нужно приостановить асинхронную операцию, пока пользователь не предоставит какую-то обратную связь.
Например, вы можете вызвать Invoke () для запуска фрагмента кода, который показывает диалоговое окно OK / Отмена. После того, как пользователь нажмет кнопку и ваш маршалинг-код завершится, метод invoke () вернется, и вы сможете действовать в соответствии с ответом пользователя.
См. Pro WPF в C # глава 31
. Для меня эта ошибка произошла, потому что у меня было 2 действия веб-API, которые имели одинаковые подписи и у обоих были одинаковые глаголы, HttpPost
, что я сделал, изменил один из глаголов (тот, который использовался для обновления) на PUT и ошибка была удалена. Следующее в моем заявлении catch помогло найти причину проблемы:
catch (WebException webex)
{
WebResponse errResp = webex.Response;
using (Stream respStream = errResp.GetResponseStream())
{
StreamReader reader = new StreamReader(respStream);
string text = reader.ReadToEnd();
}
}
Вы пытались указать UserAgent для вашего запроса? Например:
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
В первую очередь, глядя на ваше сообщение об ошибке, я бы посоветовал вам перекомпилировать все ваше приложение, убедитесь, что все необходимые библиотеки находятся в папке bin, когда вы перекомпилируете его.
Для меня ошибка вводила в заблуждение. Я обнаружил истинную ошибку, протестировав ошибочный веб-сервис с SoapUI.