[英]XMLDocument, XMLTextWriter and HttpWebResponse Class will not work in .NET Core project
我正在嘗試將一個控制台應用程序項目集成到一個.netcore項目中。 在我的控制台應用程序中,該項目完全可以完成我想要的工作,並且可以很好地構建和運行它,但是當我嘗試添加庫引用時,將其復制到.net核心Web應用程序中,則表明該庫與我所使用的庫完全不同使用控制台應用程序。 當我嘗試使用建議的庫時,該項目將無法構建,或者如果我使用完全相同的引用,則該項目將無法在.net核心Web應用程序中運行。
private HttpWebResponse PutOnUri(string uri, string contentType, string body)
{
try
{
byte[] bodyBytes = Encoding.UTF8.GetBytes(body);
var client = (HttpWebRequest)HttpWebRequest.Create(uri);
client.AllowAutoRedirect = false;
client.AllowWriteStreamBuffering = false;
client.Method = "PUT";
client.ContentType = contentType;
client.ContentLength = bodyBytes.Length;
client.GetRequestStream().Write(bodyBytes, 0, bodyBytes.Length);
return (HttpWebResponse)client.GetResponse();
}
catch (WebException e)
{
return (HttpWebResponse)e.Response;
}
}
private XmlDocument LoadXMLFromUri(string uri)
{
XmlDocument doc = new XmlDocument();
doc.Load(uri);
return doc;
}
private string ConvertXmlDocumentToString(XmlDocument doc)
{
StringWriter sw = new StringWriter();
XmlTextWriter tx = new XmlTextWriter(sw);
doc.WriteTo(tx);
return sw.ToString();
}
這些是我在OLD Console應用程序中使用的參考,它工作正常:
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
附加功能(使用XPAth):
private string GetValueFromDocumentByXPath(XmlDocument doc, string xpath)
{
var nav = doc.CreateNavigator();
var it = nav.Select(xpath, nameSpaceManager_);
if (it.MoveNext())
{
return it.Current.Value;
}
return "";
}
private void SetValueToDocumentByXPath(XmlDocument doc, string xpath, string value)
{
var nav = doc.CreateNavigator();
var it = nav.Select(xpath, nameSpaceManager_);
if (it.MoveNext())
{
it.Current.SetValue(value);
}
}
您將需要稍微修改代碼。
private XPathDocument LoadXMLFromUri(string uri)
{
var req = WebRequest.CreateHttp(uri);
var resTask = req.GetResponseAsync();
resTask.Wait();
XPathDocument doc = new XPathDocument(resTask.Result.GetResponseStream());
return doc;
}
private string ConvertXmlDocumentToString(XmlDocument doc)
{
StringWriter sw = new StringWriter();
XmlWriter tx = XmlWriter.Create(sw);
doc.WriteTo(tx);
return sw.ToString();
}
private string GetValueFromDocumentByXPath(XPathDocument doc, string xpath)
{
var nav = doc.CreateNavigator();
var it = nav.Select(xpath, nameSpaceManager_);
if (it.MoveNext())
{
return it.Current.Value;
}
return "";
}
private void SetValueToDocumentByXPath(XPathDocument doc, string xpath, string value)
{
var nav = doc.CreateNavigator();
var it = nav.Select(xpath, nameSpaceManager_);
if (it.MoveNext())
{
it.Current.SetValue(value);
}
}
private HttpWebResponse PutOnUri(string uri, string contentType, string body)
{
try
{
byte[] bodyBytes = Encoding.UTF8.GetBytes(body);
var client = (HttpWebRequest)HttpWebRequest.Create(uri);
client.Method = "PUT";
client.ContentType = contentType;
var reqStreamTask = client.GetRequestStreamAsync();
reqStreamTask.Result.Write(bodyBytes, 0, bodyBytes.Length);
reqStreamTask.Wait();
var resTask = client.GetResponseAsync();
resTask.Wait();
return (HttpWebResponse) resTask.Result;
}
catch (WebException e)
{
return (HttpWebResponse)e.Response;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.