다음을 통해 공유


SOAP 세션 사용

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.

기존 세션의 컨텍스트 내에서 SOAP 요청을 실행하려면 서버에 대한 SOAP 세션 요청의 일부로 다음을 지정해야 합니다.

  • 이전에 서버에서 클라이언트에 제공한 세션 ID

  • 이전에 SOAP 세션이 시작되었던 끝점에 해당하는 HTTP 끝점 ID

  • 동일한 사용자 컨텍스트. 끝점의 SOAP 속성에서 지원되는 LOGIN_TYPE에 따른 Windows 사용자 또는 SQL Server 사용자입니다.

지정된 세션 식별자가 없거나 올바른 형식이 아닐 경우 terminate 특성을 가진 헤더에 sqlSession 요소와 함께 SOAP 오류 메시지가 반환됩니다. 그렇지 않은 경우 서버는 클라이언트의 요청에 포함된 동일한 sqlSession 헤더를 다시 에코하여 응답합니다.

세션을 시작했던 보안 컨텍스트나 끝점이 아닌 다른 보안 컨텍스트나 끝점에서 요청이 실행된 경우에는 SOAP 오류가 반환됩니다. 응답에는 SOAP 계층을 종료하기 위한 SOAP 오류 코드가 지정되고 sqlSession 헤더에는 terminate 특성이 true 값으로 포함됩니다.

또한 악의가 있는 사용자가 세션을 확인하는 것을 방지하기 위해 terminate 특성이 설정되며 알 수 없는 참여 세션이 포함된 모든 요청에 대해 서버에서는 유일한 응답 메시지로 SOAP 오류를 반환합니다.

다음 예에서는 SOAP 세션 참여를 보여 줍니다. 또한 클라이언트가 기존 SOAP 세션에 참여를 요청할 때 보내는 SOAP 메시지의 형식을 보여 줍니다. 실제 sessionId 값은 세션별 식별자입니다.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- enlist in an existing session --><sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

서버에서는 해당 세션에 액세스할 수 있는 경우 요청 메시지를 다시 클라이언트로 에코하며 요청에서 식별된 해당 세션에 액세스할 수 없는 경우에는 클라이언트에 SOAP 오류를 반환합니다.