none
HttpWebRequest 指定的参数已超出有效值的范围 RRS feed

  • 问题

  • HttpWebRequest 指定的参数已超出有效值的范围     代码:
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
    req.Method = "post";
    req.Accept = "*/*";
    req.ContentType = "text/xml";
    byte[] buf =
    Encoding.GetEncoding(936).GetBytes(content.ToCharArray());
    req.ContentLength = buf.Length;

    System.IO.Stream stream= req.GetRequestStream();

    stream.Write(buf, 0, buf.Length);
    stream.Close();
    stream = req.GetResponse().GetResponseStream();
    stream.Read(buf, 0, (int)req.GetResponse().ContentLength);//在这里发生错误,页面内容没读取完就报错了,是不是流中含有/0或者 -1之类的特殊字符引起的,如何解决?该错误不经常发生,只对于个别页面会产生错误,初步判断请求.aspx文件时报错,请求.asp文件时不会报错
    stream.Close();
    错误:

    未处理 System.ArgumentOutOfRangeException
    Message="指定的参数已超出有效值的范围。\r\n参数名: size"
    Source="System"
    ParamName="size"
    StackTrace:
    在 System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32
    size)
    在 WindowsApplication1.api.post2(String url, String content) 位置
    d:\WindowsApplication1\WindowsApplication1\api.cs:行号 140
    在 WindowsApplication1.Form1.button3_Click(Object sender, EventArgs
    e) 位置 d:\WindowsApplication1\WindowsApplication1\Form1.cs:行号 99
    在 System.Windows.Forms.Control.OnClick(EventArgs e)
    在 System.Windows.Forms.Button.OnClick(EventArgs e)
    在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
    button, Int32 clicks)
    在 System.Windows.Forms.Control.WndProc(Message& m)
    在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
    在 System.Windows.Forms.Button.WndProc(Message& m)

    System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&
    m)
    在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd,
    Int32 msg, IntPtr wparam, IntPtr lparam)
    在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&
    msg)

    System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32
    dwComponentID, Int32 reason, Int32 pvLoopData)

    System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32
    reason, ApplicationContext context)

    System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason,
    ApplicationContext context)
    在 System.Windows.Forms.Application.Run(Form mainForm)
    在 WindowsApplication1.Program.Main() 位置
    d:\WindowsApplication1\WindowsApplication1\Program.cs:行号 17
    在 System.AppDomain.nExecuteAssembly(Assembly assembly, String[]
    args)
    在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence
    assemblySecurity, String[] args)
    在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    在 System.Threading.ExecutionContext.Run(ExecutionContext
    executionContext, ContextCallback callback, Object state)
    在 System.Threading.ThreadHelper.ThreadStart()
    2007年8月7日 7:57

答案

  • Stream的ArgumentOutOfRangeException的错误原因是offset or count is negative,所以应该不是Stream的错误,您需要调试看ContentLength的值。

    为了更快的解决问题,希望您能够提供报错网页的链接地址和content的类型和内容。
    2007年8月7日 8:48