C# 请求已中止:请求已取消

C# 请求已中止:请求已取消,c#,web-services,soap,windows-services,C#,Web Services,Soap,Windows Services,现在我尝试从windows服务调用本地服务器中的web服务,但出现错误 错误为“请求已中止:请求已取消。” 我的代码是 try { XmlDocument soapEnvelopeXml = new XmlDocument(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("xx.asmx"); request.UserAgent = "Mozilla/5.0"; request.Host = "server"; requ

现在我尝试从windows服务调用本地服务器中的web服务,但出现错误 错误为“请求已中止:请求已取消。” 我的代码是

try {
XmlDocument soapEnvelopeXml = new XmlDocument();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("xx.asmx");
request.UserAgent = "Mozilla/5.0";
request.Host = "server";
request.ContentType = "text/xml; charset=utf-8";
request.Headers.Add("SOAPAction", "\"xx\"");
request.Method = "POST";
request.Accept = "text/xml";

soapEnvelopeXml.LoadXml(getXml(dt));
request.ContentLength = soapEnvelopeXml.OuterXml.Length;
using (Stream Stream = request.GetRequestStream()) {
    soapEnvelopeXml.Save(Stream);
}
using (WebResponse response = request.GetResponse()) {

    using (StreamReader rd = new StreamReader(response.GetResponseStream())) {
        string soapResalt = rd.ReadToEnd();
        CtlCommon.CreateErrorLog(strPath, soapResalt);
    }
}


} catch (Exception ex) {
    CtlCommon.CreateErrorLog(strPath, ex.InnerException.ToString);
    CtlCommon.CreateErrorLog(strPath, ex.Message);
}

有一段时间,我试图关闭Stream、StreamReader和response,但错误仍然存在。

我遇到的问题是像Ølie这样的法语字母必须使用ASCII编码。

我遇到了这个问题,因为挪威语的特殊字符(例如Ø、å等)被发送过来。通过使用UTF-8编码解决了这个问题

httpWebRequest.ContentType      = "text/xml; charset=utf-8";
httpWebRequest.Method           = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(xmlData);   //Convert to UTF-8
httpWebRequest.ContentLength = byteArray.Length;      //Set the length of UTF-8 format

//Send the data in UTF-8 format
using (Stream streamWriter = httpWebRequest.GetRequestStream())
{
    streamWriter.Write(byteArray, 0, byteArray.Length);
    streamWriter.Flush();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();         
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    ret = streamReader.ReadToEnd();
}
使用UTF-8编码发送数据。您可以参考以下C代码作为UTF-8编码的示例

httpWebRequest.ContentType      = "text/xml; charset=utf-8";
httpWebRequest.Method           = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(xmlData);   //Convert to UTF-8
httpWebRequest.ContentLength = byteArray.Length;      //Set the length of UTF-8 format

//Send the data in UTF-8 format
using (Stream streamWriter = httpWebRequest.GetRequestStream())
{
    streamWriter.Write(byteArray, 0, byteArray.Length);
    streamWriter.Flush();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();         
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    ret = streamReader.ReadToEnd();
}

我想从这个评论中解决这个问题