2010-01-18 8 views
2

일부 xml 데이터를 사용하는 .net 웹 서비스가 있습니다.웹 서비스 호출에서 웹 페이지로 리디렉션

웹 서비스 내에서 데이터를 조작 한 다음 사용자에게 정보를 표시하는 웹 페이지를 호출하려고합니다. 웹 서비스는 웹 페이지를 스팬 한 후에 반환해야합니다.

나는이 일을 행하는 데 아무런 지장이 없습니다.

나는 Server.Transfer (url, end)를 시도했다. 내 수익이 전송으로 인해 휴지통에 남겨져 예외가 생성됩니다. 클라이언트가 응답 콘텐츠 유형 'text/html; charset = utf-8 '이지만 예상 한'text/xml '입니다.

나는 또한 Context.Response.Redirect (url, end)를 시도했다; 302 예외 (객체 이동)를 생성합니다.

302 오류를 처리하는 방법에 대해 여러 가지 철자를 보았습니다. 그러나 나는 클라이언트에 대한 통제권이 없다. 이 경우 웹 서비스 호출을하기 전에 클라이언트 측 호출을 감쌀 수 없도록 Java 응용 프로그램에서 내 서비스가 호출됩니다. 나는 asmx에서 그것을 할 필요가있다.

// this is very basic but the general gist 
[WebMethod] 
public string MyRequest(string someXML) 
{ 
    // process the xml, dump do database, invoke aspx page 

    string url = "xxxx.aspx"; 
    bool end = false; 

    Server.Transfer(url, end); 
    //this.Context.Response.Redirect(url, end); 

    return "<retcode>somecode</retcode>"; 
} 

이 상황의 예를 보거나 서비스 내에서 웹 페이지를 비동기 적으로 호출하여 반환하는 방법을 찾았습니다. 누구든지이 패턴이나 예제를 가르쳐 주시겠습니까?

감사

마이크

답변

3

아쉽게도 클라이언트 응용 프로그램을 제어 할 수 없다면 불가능합니다. 클라이언트 앱 끝에서 생각해보십시오.

웹 서비스 (이 경우 SOAP을 추측하고 있습니다)는 편의상 http로 이동하지만 실제로는 데이터 호출이며 웹 페이지가 아닙니다. 따라서 클라이언트 앱이 사실상 프로토콜 점프 인 웹 사이트로의 리디렉션을 존중할 의무는 없습니다. 필자는 대부분의 SOAP 라이브러리가 호출하려는 데이터 서비스가 이동했다는 가정하에 302 리디렉션을 따르므로 새 URI에서 데이터 서비스를 찾을 것으로 예상합니다.

또한 클라이언트가 일종의 응용 프로그램 (즉, 브라우저에서 실행되는 javascript가 아닌)이라고 가정하면 웹 페이지를 렌더링 할 수도 없으므로 브라우저를 실행해야합니다.

클라이언트를 제어하지 않지만 프로토콜/인터페이스를 제어하는 ​​경우 클라이언트가 브라우저를 시작할 것으로 예상되는 곳에서 반환 유형을 정의 할 수 있지만 기본적으로 클라이언트 구현 자에게 당신이 직접 할 수없는 일을하십시오.

0

클라이언트가 XML 응답 (웹 서비스의 요점을) 기대 때문에 때문에 당신은이 작업을 수행 할 수 없습니다. 클라이언트가 서버 측과 완전히 다른 일을하도록 강요 할 수는 없습니다 (즉, 완전히 새로운 애플리케이션을 열면 브라우저가됩니다).
클라이언트 응용 프로그램을 변경해야합니다.

편집 :
웹 서비스에서 사용자에게 표시되는 메시지를 반환하는 경우 "결과를 보려면 [URL]로 이동하십시오."와 같이 사용자가 지침을 따르길 바랍니다.

관련 문제