1

我正在尝试通过 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();
}

错误:

System.Net.WebException 未处理 Message="请求已中止:请求已取消。" Source="System" StackTrace: 在 System.Net.ConnectStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) 在 System.Net.ConnectStream.Dispose(Boolean) 的 System.Net.ConnectStream.CloseInternal(Boolean internalCall, Boolean aborting)在 System.IO.Stream.Close() 在 System.IO.StreamWriter.Dispose(Boolean disposing) 在 System.IO.StreamWriter.Close() 在 ConsoleApplication1.Program.Main(String[] args) 在 C:/ Program Files/Program.cs:第 62 行 System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 在 Microsoft.VisualStudio.HostingProcess。

4

4 回答 4

1

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

于 2009-06-14T20:34:12.200 回答
1

您可能希望增加请求的超时时间。

我在尝试分块上传 26Mb 文件时遇到了同样的问题,但由于同样的错误而失败。我增加了超时时间,它成功发布了它。(我正在与亚马逊打交道)。

于 2012-06-29T10:14:07.083 回答
0

包括这个:

request.KeepAlive = false;

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

于 2009-06-14T20:31:01.133 回答
0

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

您在示例中拥有的内容,即这一行:

postStream.WriteLine("+1604333333");

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

尝试发送一个有效的 XML 文档,看看会发生什么。这是您可以发送的最小文档。由于发送此信息,您应该会收到不同的错误。

postStream.WriteLine("<?xml version=\"1.0\"?><test />");
于 2009-06-14T20:33:44.590 回答