2011-04-05 4 views
4

문제가 발생했습니다. 해결할 수 없으므로 도와 주실 것을 부탁드립니다. 나는 WebService를 함께 일하고 있어요 그리고 난 모양 GetSystemDocument라는 WebService를 방법에서을 XmlDocument를 반환하려고 해요 :이 웹 서비스를 참조하는 프로젝트에서Webservice 메서드는 XmlDocument를 반환하고 Reference는 XmlNode를 봅니다.

[WebMethod(Description = "blabla")] 
    public XmlDocument GetSystemDocument(string DocumentName) 
    { 
     return new XmlDocument(); 
    } 

. Visual Studio에서는 암시 적으로 'System.Xml.XmlNode'형식을 'System.Xml.XmlDocument'형식으로 변환 할 수 없다고 알려줍니다. 문제가

/// <remarks/> 
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://doc.cexp.ca/GetSystemDocument", RequestNamespace="http://doc.cexp.ca", ResponseNamespace="http://doc.cexp.ca", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
    public System.Xml.XmlNode GetSystemDocument(string DocumentName) { 
     object[] results = this.Invoke("GetSystemDocument", new object[] { 
        DocumentName}); 
     return ((System.Xml.XmlNode)(results[0])); 
    } 

: 나는 (비주얼 스튜디오에 의해 생성)을 Reference.cs 파일에 보면 같은

코드 보인다. XmlNode 대신 XmlDocument가 표시되어야합니다. 수동으로 편집하면 빌드되고 모든 것이 올바르게 작동합니다.

IIS를 재설정하고 참조를 업데이트하고 웹 서비스를 다시 작성해 보았습니다. 누군가 해결책이 있습니까?

여기는 대답하지 않은 Similar question입니다.

감사

답변

4

웹 메소드의 결과를 많이는 XML 문서 인 SOAP 문서에 포함되어 있습니다. 따라서 웹 메서드에서 XML을 반환하려면 XmlElement를 반환해야합니다.

[WebMethod(Descrption = "foo")] 
public XmlElement GetSystemDocument(string documentName) 
{ 
    var doc = new XmlDocument(); 
    doc.LoadXml("<foo> <bar x="a"/> </foo>"); 
    return doc.DocumentElement; 
} 

편집 : 는

+1

난 그냥 잡힐 생각 컴파일 있는지 확인하는 코드를 수정! 응답은 XmlDocument 자체이므로 XmlDocument를 포함 할 수 없습니다. – David

+1

하지만 Reference.cs를 수동으로 편집하면 왜 작동합니까? – David

관련 문제