Streamwriter写但是给了web异常

时间:2009-06-14 20:27:24

标签: c# httpwebrequest streamwriter system.net.webexception

我正在尝试通过网络服务插入数据。下面的代码写入数据库;但是,我有一个错误(见底部)。这里出了什么问题?以及如何解决它?

//Create the web request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

//Set type to POST
request.Method = "POST";
request.ContentType = "text/XML";

// Write data  
using (StreamWriter postStream = new StreamWriter(request.GetRequestStream()))
{
     postStream.WriteLine("<biz_in><phone_no>+1604333333</phone_no></biz_in>");
     postStream.Dispose();
}

错误:

System.Net.WebException未处理   消息=“请求已中止:请求已取消。”   来源=“系统”   堆栈跟踪:        在System.Net.ConnectStream.CloseInternal(Boolean internalCall,Boolean aborting)        在System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)        在System.Net.ConnectStream.Dispose(布尔处理)        在System.IO.Stream.Close()        在System.IO.StreamWriter.Dispose(布尔处理)        在System.IO.StreamWriter.Close()        在C:/ Program Files / Program.cs中的ConsoleApplication1.Program.Main(String [] args):第62行        在System.AppDomain.nExecuteAssembly(程序集程序集,String [] args)        在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)        在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()        在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)        在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)        在System.Threading.ThreadHelper.ThreadStart()

4 个答案:

答案 0 :(得分:1)

StreamWriter在您处理它时会关闭它。

答案 1 :(得分:1)

您可能希望增加请求的timeOut。

我遇到了同样的问题,我试图以块的形式上传26Mb文件,并且失败并出现同样的错误。我增加了超时并成功发布了它。 (我正在与亚马逊打交道。)

答案 2 :(得分:0)

包括这个:

request.KeepAlive = false;

这将起作用,但可能意味着性能损失,因为TCP连接不会重复使用(也称为HTTP流水线操作)。 TCP连接现在立即关闭,并在每个HTTP请求上重新打开。

答案 3 :(得分:0)

如果您已被指示将MIME类型设置为text / XML;我认为你的服务器期望在消息正文中发送有效的XML。

您的示例中包含的内容,即此行:

postStream.WriteLine("+1604333333");

...不符合有效的XML数据。

尝试发送有效的XML文档,看看从那里发生了什么。这是您可以发送的最小文档。发送此消息时,您应收到不同的错误。

postStream.WriteLine("<?xml version=\"1.0\"?><test />");