Я сталкиваюсь с ошибкой Stream.Length выдает NotSupportedException

Я пытаюсь отправить некоторые данные из приложения ASP.Net в PHP, используя объект HttpWebRequest. Но когда я пытаюсь прочитать содержимое Request, используя

Stream myStream = myWebReq.GetRequestStream();

я получаю сообщение об ошибке

'responseStream.Length' вызвало исключение типа 'System.NotSupportedException'.
Length = 'dataStream.Length' возбудило исключение типа 'System.NotSupportedException'
Position = 'dataStream.Position' возбудило исключение типа введите «System.NotSupportedException»

Вот код

string strURL = null;
HttpWebRequest myWebReq = default(HttpWebRequest);
HttpWebResponse myWebResp = default(HttpWebResponse);

byte[] byteData = null;
StreamReader sr = default(StreamReader);
strURL = "http://people.com.pk/nppm/hrms_ppm_service.php?dump=1";
myWebReq = (HttpWebRequest)WebRequest.Create(strURL);
myWebReq.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
myWebReq.Method = "POST";

Label1.Text = Newtonsoft.Json.JsonConvert.SerializeObject(batches).ToString();

byteData = UTF8Encoding.UTF8.GetBytes(Label1.Text);
myWebReq.ContentLength = byteData.Length;

myWebReq.KeepAlive = true;

if (myWebReq.Proxy != null)
{
   myWebReq.Proxy.Credentials = CredentialCache.DefaultCredentials;
}

Stream myStream = myWebReq.GetRequestStream();

if (byteData.Length > 0)
{
   myStream.Write(byteData, 0, byteData.Length);
   myStream.Close();
}

myWebResp = (HttpWebResponse)myWebReq.GetResponse();
sr = new StreamReader(myWebResp.GetResponseStream());
string strJSON__2 = sr.ReadToEnd();
Label1.Text = strJSON__2;

person Waseem Sattar    schedule 13.11.2013    source источник
comment
можете ли вы опубликовать полную трассировку стека excpetion, в какой строке он выдал excpetion....   -  person dbw    schedule 13.11.2013
comment
исключение здесь... Stream myStream = myWebReq.GetRequestStream(); ‹blink› Length = 'dataStream.Length' сгенерировало исключение типа 'System.NotSupportedException' Position = 'dataStream.Position' сгенерировало исключение типа 'System.NotSupportedException' ‹/blink›   -  person Waseem Sattar    schedule 13.11.2013


Ответы (1)


Просто проверьте свое свойство HttpWebRequest.DefaultCachePolicy.
Поскольку документация предполагает, что метод HttpWebRequest.GetRequestStream будет выдавать NotSupportedException только тогда, когда средство проверки кеша запросов указывает, что ответ на запрос может быть получен из кеша; однако запросы, записывающие данные, не должны использовать кеш. Это исключение может возникнуть, если вы используете пользовательский валидатор кэша, который неправильно реализован.

person dbw    schedule 13.11.2013
comment
очистите кеш со следующими строками... HttpWebRequest.DefaultCachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); все еще проблема NotSupportedException - person Waseem Sattar; 13.11.2013
comment
Попробуйте это, myWebReq.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache); //RequestCacheLevel должен быть BypassCache - person dbw; 13.11.2013
comment
@devanalysts Я вставил ваш код, он отлично работает на моей машине - person dbw; 13.11.2013
comment
я пробовал с 2 машинами, но все же исключение Stream.Length выдает NotSupportedException. - person Waseem Sattar; 13.11.2013
comment
@devanalysts, вы сказали, что ошибка здесь Stream myStream = myWebReq.GetRequestStream(), но в вашей трассировке стека, опубликованной в вопросе «responseStream.Length», возникло исключение типа «System.NotSupportedException»????? что-то вы не правильно вставляете вопрос.... - person dbw; 13.11.2013