C# Streamwriter写入但给出web异常

C# Streamwriter写入但给出web异常,c#,httpwebrequest,streamwriter,system.net.webexception,C#,Httpwebrequest,Streamwriter,System.net.webexception,我正在尝试通过web服务插入数据。下面的代码写入数据库;但是,我有一个错误(见下图)。这里出了什么问题?如何修复它 //Create the web request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); //Set type to POST request.Method = "POST"; request.ContentType = "text/XML"; // Write data using

我正在尝试通过web服务插入数据。下面的代码写入数据库;但是,我有一个错误(见下图)。这里出了什么问题?如何修复它

//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();
}
//创建web请求
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(uri);
//将类型设置为POST
request.Method=“POST”;
request.ContentType=“text/XML”;
//写入数据
使用(StreamWriter postStream=newstreamwriter(request.GetRequestStream()))
{
postStream.WriteLine(“+1604333333”);
postStream.Dispose();
}
错误: System.Net.WebException未处理 Message=“请求已中止:请求已取消。” Source=“系统” 堆栈跟踪: 位于System.Net.ConnectStream.CloseInternal(布尔内部调用,布尔中止) 位于System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) 在System.Net.ConnectStream.Dispose(布尔处理)中 在System.IO.Stream.Close()处 在System.IO.StreamWriter.Dispose处(布尔值disposing) 在System.IO.StreamWriter.Close()处 在C:/Program Files/Program.cs中的ConsoleApplication1.Program.Main(字符串[]args)处:第62行 位于System.AppDomain.nExecuteAssembly(程序集,字符串[]args) 位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上 位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态) 在System.Threading.ThreadHelper.ThreadStart()中包括以下内容:

request.KeepAlive = false;

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

如果已指示您将MIME类型设置为text/XML;我假定您的服务器期望在消息体中发送有效的XML

示例中的内容,即这一行:

postStream.WriteLine("+1604333333");
。。。将不符合有效XML数据的条件

尝试发送一个有效的XML文档,看看会发生什么。这是您可以发送的最小文档。发送此邮件后,您将收到另一个错误

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

StreamWriter在您处理底层流时关闭它。

您可能需要增加请求的超时时间


我有同样的问题,我试图上传26Mb的文件在块,它是失败的,与相同的错误。我增加了超时时间,它成功地发布了它。(我正在与亚马逊打交道)。

事实证明,Streamwriter比它应该的麻烦多了。我选择只使用“Stream”来代替Stream postData=request.GetRequestStream();写入(byteData,0,byteData.Length);postData.Close();然而,我发现了另一个问题。上面的代码在控制台应用程序中运行良好。由于这是一个移动win 5应用程序,因此在my mobile ph上执行会出现另一个错误。错误:由于可选资源,无法显示错误消息。您建议使用什么?找不到包含它的程序集ry,错误消息应为:无法显示错误消息,因为找不到包含它的可选资源程序集