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