문제

소수의 소비자 (ASPX 페이지, 플래시 파일 및 다른 파일)가 소비 할 동적으로 생성 된 XML 데이터가 있습니다.

나는 그것을 사용자 정의 핸들러로 구현했습니다. 핸들러에 XML을 구성하고 응답을 사용하여 출력합니다.

이제 XMLDatasource의 DataFile 속성을 핸들러에 설정하면 ASHX 파일을 문자 그대로 읽으려고 시도하고 HTTP를 통해 호출하지 않습니다.

어떤 충고?

도움이 되었습니까?

해결책

XML 생성 코드를 별도의 클래스에 배치하십시오. 핸들러가 클래스를 사용하여 XML을 생성하고 클라이언트에 결과를 보냅니다 (BTW, 응답을 사용하지 마십시오. XML 문서 기술을 사용하여 XML을 처음 구축하는 데 사용하고 있습니까?).

클래스가 완성 된 XML을 문자열로 노출시킬 수 있는지 확인하십시오.

ASPX 페이지에서 동일한 클래스를 사용하고 XML 문자열을 XMLDatasource 컨트롤의 데이터 속성에 할당하십시오.

편집하다:

XMLTextWriter를 사용하고 있으며 귀하의 의견에서 위의 내용은 분명히 혼란 스러울 것입니다.

현재 XML을 생성하는 코드를 가져 와서 APP_Code 폴더 (또는 DLL 프로젝트)의 클래스에 배치해야합니다. 이 클래스에는 XMLTextWriter 매개 변수로 취하는 메소드가 있습니다.

public class XmlCreator
{
    public void GenerateXml(XmlTextWriter writer)
    {
         //All your code that writes the XML
    }
}

핸들러 에서이 코드가 있습니다.

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

응답이 필요하지 않음. 쓰기를 작성하면 인코딩이 올바르게 완료됩니다.

ASP.NET 페이지에서 다음을 사용합니다.

StringWriter source = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(source, Encoding.Unicode);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);

yourXmlDataSource.Data = source.ToString();

XMLCreator는 인스턴스를 사용할 필요가 없을 수 있습니다.이 경우 정적 클래스를 사용할 수 있습니다. XM 생성을 공급하는 데 필요한 다른 데이터에 따라 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top