2017-02-03 6 views
0

콘솔 앱 프로젝트를 a.netcore 프로젝트에 통합하려고합니다. 내 콘솔 애플 리케이션에서 프로젝트가 정확히 내가 뭘하고 빌드하고 완벽하게 잘 실행하지만 않습니다. NET 코어 웹 응용 프로그램에 복사 할 때 라이브러리 참조를 추가하려고하면 그것은 내가 가진 것과 완전히 다른 라이브러리를 제안합니다 콘솔 앱을 사용합니다. 제안 된 라이브러리를 사용하려고하면 프로젝트가 빌드되지 않거나 정확히 동일한 참조를 사용하면 .net 핵심 웹 응용 프로그램에서 작동하지 않습니다..NET 핵심 프로젝트에서 XMLDocument, XMLTextWriter 및 HttpWebResponse 클래스가 작동하지 않습니다.

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 콘솔 응용 프로그램에서 사용하고있는 참조하고 그것을 잘 작동합니다 :

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); 
     } 
    } 
+0

어떤 .net-core 버전을 타겟팅합니까? 릴리스 1.1은 사용중인 일부 API를 지원하지 않습니다. – peval27

+0

가 귀하의 웹 주소입니까? – Vijay

+0

Microsoft.AspNetCore.Mvc (1.0.1) – Decoder94

답변

2
당신은 수정해야합니다

은 귀하의 코드를 조금.

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; 
     } 
    } 
+0

이 방법으로 오류를 해결할 수 있지만 System.Xml.Linq; 그러나 다른 오류가 나타납니다 : doc.CreateNavigator() – Decoder94

+0

그 경우에는 XPathDocument를 사용하십시오. 다른 도서관이 필요합니다. 게시 된 코드가 귀하가 필요로하는 것을 나타내지 않았습니다. – Vijay

+0

나는이 문제를 이해하지 못하기 때문에 내가 무엇이 필요한지 확신 할 수 없다. Xpath를 사용하여 URL에서 문서를 쿼리합니다. 일부 요소를 편집 한 다음 URL로 다시 보냅니다. – Decoder94