UDN
Search public documentation:

WebServerKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 인풋 / 아웃풋 > 웹 서버

웹 서버


문서 요약: UT3의 HTTP 웹서버 구현 사항의 API와 사용법 입니다.

문서 변경사항: Michiel Hendricks 작성. 홍성진 번역.

개요


웹서버 사용법 및 웹어플(리케이션)을 새로 만드는 방법에 대한 문서입니다. 웹서버에 사용되는 네트웍 연결의 로우 레벨 정보는, TcpLink 문서를 참고하시기 바랍니다.

HTTP 프로토콜에 대한 기본 지식이 있다는 가정하에 진행합니다. 사실 HTTP에 대해 자세히 아실 필요는 없지만, 알아두시면 도움이 많이 됩니다.

웹서버는 HTTP 프로토콜의 일부만 지원합니만, 웹어플에는 기능이 추가될 수도 있습니다. 현재 GET 과 POST 요청만 지원됩니다.

구조


웹서버 기능을 구성하는 클래스는 다음과 같습니다:

WebServer
웹서버의 시작점이며, 연결과 어플리케이션을 관리합니다.
WebConnection
웹서버의 Acceptor 클래스입니다. 웹서버에 연결되는 각 클라이언트에 대해 이 클래스의 인스턴스가 생성됩니다. 연결을 관리하고, 웹어플에 전달되기 전의 전처리 과정을 담당합니다.
WebRequest
이 클래스는 웹서버가 수신한 HTTP 요청을 구체화합니다.
WebResponse
이 클래스는 요청에 대한 응답을 제공해 주는 기능을 구현합니다.
WebApplication
이 클래스의 구현 사항은 요청 처리 및 응답 생성을 담당합니다. 웹서버를 사용할 때, 이 클래스를 확장하게 됩니다.

HTTP 요청 프로세스


  1. 클라이언트가 웹서버에 연결합니다.
  2. WebConnection 가 새로 생성되어, WebServer 의 연결 카운터가 증가됩니다.
  3. WebConnection.Accepted 가 호출됩니다.
    1. 셧다운 타이머가 가동됩니다. 연결은 30초동안만 유지됩니다.
  4. WebConnection.ReceivedText. 연결이 요청을 받습니다.
    1. 계속 요청 헤더를 처리중일 때, 데이터를 줄 단위로 분리합니다.
    2. 요청 헤더를 처리합니다.
      1. 요청 URL에 있는 요청 변수를 처리합니다.
      2. GET 요청의 경우:
        1. WebRequestWebResponse 인스턴스를 생성합니다.
        2. 연결된 웹어플을 찾습니다.
        3. 웹어플이 없으면, HTTP를 기본 어플리케이션(이 설정된 경우)에 돌리도록 응답합니다.
      3. POST 요청의 경우:
        1. WebRequestWebResponse 인스턴스를 생성합니다.
        2. 연결된 웹어플을 찾습니다.
      4. 헤더를 WebRequest.ProcessHeaderString 에 의해 처리합니다.
        1. Authorization: Basic 이면, 인증 사용자명과 암호를 디코드합니다.
        2. Content-Length 이면, ContentType 변수를 설정합니다.
        3. Content-Length 이면, ContentLength 변수를 설정합니다.
    3. 요청을 검사합니다:
      1. WebResponse 가 생성되지 않았으면, HTTP 400 에러로 응답합니다.
      2. 웹 어플리케이션이 없으면, HTTP 404 에러로 응답합니다.
    4. WebRequest.ContentLength 가 0보다 크고 POST 요청인 경우, 추가 데이터를 읽습니다.
    5. WebApplication.PreQuery 호출. 결과가 참이면:
      1. WebApplication.Query 호출.
      2. WebApplication.PostQuery 호출.
    6. 클린업 초기화:
      1. 모든 변수를 언셋합니다.
      2. 연결을 닫습니다.

† : 빌드하게 될 부분입니다.

WebApplication 만들기


웹서버의 기능을 확장하려면, 일반적으로 웹어플을 만들어야 합니다. 이는 WebApplication 클래스의 상속 및 최소한 WebApplication.Query 메서드의 구현을 통해 이루어 집니다.

IpDrv 에서 HelloWeb 호출 구현 예제를 찾을 수 있습니다.

웹어플이 등록되면 웹서버에서만 사용되게 됩니다. 웹어플을 등록하려면, 웹서버 환경설정을 갱신해야 합니다. ??Web.ini 파일을 수정하여 [IpDrv.WebServer] 부분을 다음과 같이 갱신하십시오.

Applications[x]=MyPackage.MyWebApplication
ApplicationPaths[x]=/myweb
x 는 빈 슬롯 번호입니다. 웹어플은 최대 10개까지 가능하며, http://ip:port/myweb 을 통해 접근할 수 있습니다.

웹서버가 시작되면 모든 웹어플을 생성하고 초기화합니다. 해당 웹어플에 대한 path 변수는 ApplicationPaths 값으로 설정됩니다. init() 함수를 구현하여 웹어플 초기화를 수행할 수 있습니다. 웹서버가 셧다운되면, CleanupApp() 함수를 호출합니다. 그 함수를 통해 생성한 모든 액터 참조가 (변수가 none 으로 설정되는 등) 무효화됩니다.

HTTP 요청 프로세스 부분에서 보듯이, 웹어플에서 처음 호출되는 함수는 PreQuery(..) 입니다. 이 함수가 (기본 작동값인) 참을 반환하면 이어서 Query(..)PostQuery(..) 함수를 호출하게 됩니다. 세 함수 모두 다 다음과 같은 2개의 인수를 받습니다: WebRequestWebResponse 인스턴스. 클래스명이 암시하듯, WebRequest 인스턴스는 사용자의 HTTP 요청에 관한 정보를 담고 있습니다. 그리고 WebResponse 인스턴스는 해당 요청에 대한 응답을 생성하는데 사용됩니다. WebRequest 인스턴스의 URI 변수는 생성된 상대적 URL 정보를 포함합니다. 웹어플 경로는 원래 URI에서 떼어버리게 됩니다.

요청 처리하기

클라이언트의 요청은 웹어플의 Query 함수에 전달된 WebRequest 인스턴스에 저장됩니다.

아마도 WebRequest 에서 둘째 가라면 서러울 만큼 중요한 변수는 URI 일 것이며, 웹어플 영역 안에 요청 페이지를 포함하게 됩니다. 예로, 클라이언트가 http://ip:port/myweb/some/page?foo=bar 요청을 하고 나면, URI 변수는 /some/page 값을 갖게 됩니다. 웹어플의 전치사 /myweb 는 삭제되었으며, 요청 변수는 다른 곳에 저장됩니다.

GET 이나 POST 요청에 대해 요청 변수를 구하려면, GetVariable, GetVariableCount, GetVariableNumber, 및 GetVariables 함수를 사용해야 합니다. GetVariable 함수는 해당 요청에 대해 가능한 첫 값을 구합니다. 예전에 게시한 예에서 GetVariable("foo")bar 를 반환할 것입니다. 몇몇 경우에 같은 이름의 요청 변수가 여럿일 수 있습니다. 예를 들어 http://ip:port/myweb/some/page?foo=bar&quux 의 경우 GetVariableCount("foo") 함수를 사용하여 해당 변수에 대한 숫자 값을 구할 수 있고, GetVariableNumber("foo", X) 함수를 사용하여 각각의 값을 구할 수 있습니다.

또한 GetHeaderGetHeaders 함수를 통해 요청 헤더를 읽을 수도 있습니다. HTTP 헤더 Content-Type, Content-Length, Authentication 는 특정 변수에 저장되어 처리됩니다. Content-TypeContent-Length 는 POST 요청에서만 사용됩니다. Authentication 요청 헤더는 기본 인증 요청에 대해서만 처리됩니다. 이 경우 WebRequest 오브젝트의 usernamepassword 변수가 디코드된 값을 포함할 것입니다.

요청 처리의 전형적인 메서드는 다음 예제와 같습니다:

function Query(WebRequest Request, WebResponse Response)
{
    // Each "page" is handled by a separate function
    switch (request.URI)
    {
        case "/page1"
            doPage1(request, response);
            break;
        case "/page2"
            doPage2(request, response);
            break;
        // etc.
    }
}

function doPage1(WebRequest Request, WebResponse Response)
{
    if (request.getVariable("action") ~= "save")
    {
        // save incomming settings
    }
    // produce a response
}

응답 생성하기

웹어플이 응답하지 않으면, 웹서버도 아무런 응답을 하지 않습니다. 몇 가지 희귀한 경우에나 클라이언트에 쓸만한 응답을 생성하게 됩니다. 고로 내용을 채우는 일은 웹어플에 달려 있습니다.

WebResponse 오브젝트가 클라이언트로의 응답을 생성하는데 사용됩니다. 응답 생성의 가장 기본적인 메서드는 SendText 메서드를 사용하여 콘텐츠를 반환하는 것입니다. 하지만 일반적으로 내용을 조금 추가하거나, 더도 말고 덜도 말고 언리얼스크립트를 통해 생성되는 항상 동일한 응답 보다는 나은 수준의 콘텐츠를 사용하고 싶게 마련입니다.

WebRespons 오브젝트를 통해 응답을 생성하는 기본 절차는 다음과 같습니다:

  1. 콘텐츠 정의: AddHeader, Subst, ClearSubst, LoadParsedUHTM, headers, CharSet
  2. HTTPResponse
  3. SendStandardHeaders
  4. 콘텐츠 전송: IncludeUHTM, SendText, IncludeBinaryFile

처음 세 단계는 완전히 옵션입니다.

WebResponse 는 다음과 같은 몇 가지 표준 HTTP 헤더를 생성하여, 커스텀 헤더 이전에 전송합니다:

서버
"UnrealEngine IpDrv Web Server Build ..."
콘텐츠-유형
ContentType 인자값은 SendStandardHeaders 호출에 포함되어 있습니다.
캐쉬-콘트롤
"max-age=...", 웹브라우저의 ExpirationSeconds
만료
"...", 웹 브라우저의 ExpirationSeconds
연결
"Close". 웹브라우저는 한 번에 하나의 요청만 처리합니다.

요청 데이터를 생성하는 세 가지 흔한 방법이 있습니다.

  1. 수동 텍스트 보내기
  2. 파일을 있는 그대로 보내기
  3. 처리된 UHTM 파일

수동 텍스트 보내기

SendText 함수를 사용하여 웹브라우저에 응답할 문서를 수동으로 설정할 수 있습니다. 이 메서드를 사용한 웹어플 예제는 HelloWeb 클래스를 참조하십시오.

파일을 있는 그대로 보내기

WebResponse 오브젝트는 디스크에 저장된 파일을 클라이언트에 있는 그대로 보낼 수 있게 해 주는 IncludeBinaryFile 함수를 제공합니다. 이 함수는 이미지 등의 고정 파일을 보내는데 흔히 사용되니, ImageServer 클래스를 참조하십시오.

첨부할 수 있는 파일은 UDK/WEB 디렉토리에 포함되어 있어야 합니다.

주의: IncludeBinaryFile 함수는 응답 헤더가 전송되었는가를 확인하지 않습니다. 고로 IncludeBinaryFile 함수를 호출하기 전에 SendStandardHeaders 함수를 호출해야 합니다.

처리된 UHTM 파일

UHTM 은 텍스트 파일을 처리하여 특정 변수 및 지시어를 대체하는 템플릿 시스템입니다. 이 파일은 HTML 파일일 필요가 없으며, 아무 텍스트 파일이나 사용해도 됩니다.

두 가지 특수 구조가 있습니다. 첫째, 치환될 변수가 있습니다. 다음 구조를 사용하여 치환 변수를 생성합니다: <%var_name%>, var_name 은 변수의 이름입니다. Subst 함수를 사용하여 이 변수 값을 설정할 수 있습니다. 단, SGML 코멘트 안에서는 변수가 치환되지 않음을 명심하십시오. 고로 <!-- <%var_name%> --> 등은 그대로일 것입니다.

둘째 구조는 <!-- #include file="file.inc" --> 입니다. 이는 file.inc 파일을 현재 파일의 해당 위치에 포함시킵니다. 포함된 파일은 추가 변수 및 포함 지시어에 대해서도 처리될 것입니다.

LoadParsedUHTMIncludeUHTM 함수가 해당 파일을 처리하게 됩니다. LoadParsedUHTM 함수는 처리된 파일을 스트링으로 반환하며, IncludeUHTM 함수는 처리된 UHTM 파일을 웹브라우저에 보냅니다. 보통 치환 변수를 새로 만드는 데는 LoadParsedUHTM 함수를 사용하게 됩니다.

API


WebApplication

필드

Path

이 필드는 웹어플에 설정된 기본 경로로 설정됩니다. 적정 링크를 생성하려면 이 필드를 사용하십시오.

함수

Init
function Init()

WebApplication 인스턴스가 생성된 직후 호출됩니다. 몇 가지 중요 초기화는 이 함수를 통해 이루어 집니다. 이 메서드 사용 중에는 너무 많은 일을 병행하지 마시기 바랍니다. 이 웹어플에 대한 첫 요청이 있을 때까지는 전체 초기화를 지연하는 것이 좋습니다.

CleanupApp
function CleanupApp()

웹서버가 소멸되기 전 호출됩니다. 이 메서드를 통해 모든 웹어플 액터 참조를 none 으로 설정해야 메모리 누수를 막을 수 있습니다.

PreQuery
function bool PreQuery(WebRequest Request, WebResponse Response)

이 웹어플이 해당 쿼리를 처리하려는지 검사하기 위해 호출됩니다. 거짓이 반환되면, QueryPostQuery 메서드는 호출되지 않습니다.

Query
function Query(WebRequest Request, WebResponse Response)

PreQuery 함수 호출 반환값이 true인 경우 호출됩니다.

PostQuery
function PostQuery(WebRequest Request, WebResponse Response)

Query 함수 호출 반환 후 호출됩니다.

WebRequest

Fields

RemoteAddr

이 요청을 생성한 클라이언트의 주소입니다.

URI

요청 URL입니다. 이 필드는 웹어플에 의해 처리될 때 웹어플 전치사에서 제거된 부분입니다.

Username

요청에 기본 HTTP 인증 헤더가 포함한 경우 디코드된 사용자명입니다. 자세한 정보는 RFC 2617 을 참조하십시오.

Password

요청에 기본 HTTP 인증 헤더가 포함한 경우 디코드된 암호입니다. 자세한 정보는 RFC 2617 을 참조하십시오.

ContentLength

POST 요청의 바이트 수입니다.

ContentType

POST 데이터용 콘텐츠 MIME 유형입니다.

RequestType

요청의 종류에 따라 Request_GETRequest_POST 중 하나로 설정됩니다.

함수

DecodeBase64
native final function string DecodeBase64(string Encoded)

base64 인코딩된 스트링을 디코딩합니다.

EncodeBase64
native final function string EncodeBase64(string Decoded)

스트링을 base64로 인코딩합니다.

AddHeader
native final function AddHeader(string HeaderName, coerce string Value)

데이터 구조에 요청 헤더를 추가합니다. 이 함수는 요청 처리 도중에 사용되며, 웹어플 호출용은 아닙니다.

GetHeader
native final function string GetHeader(string HeaderName, optional string DefaultValue)

해당 요청 헤더 값을 구합니다. 요청에 헤더가 없을 경우, 기본값이 반환됩니다. 이름이 같은 요청 헤더가 여럿 있을 경우, 마지막에 수신된 헤더만 반환됩니다. 헤더 이름은 대소문자를 구분하지 않습니다.

GetHeaders
native final function GetHeaders(out array headers)

모든 수신 헤더 이름을 구합니다.

AddVariable
native final function AddVariable(string VariableName, coerce string Value)

수신된 요청 변수를 등록합니다. 이 함수는 요청 처리 도중 내부적으로 사용되며, 웹어플 호출용은 아닙니다.

GetVariable
native final function string GetVariable(string VariableName, optional string DefaultValue)

요청 변수 값을 구합니다. 요청 변수가 없으면 기본값이 반환됩니다. 변수명은 대소문자를 구분하지 않습니다. 동일 이름 변수가 여럿 수신된 경우, 값 하나만 반환됩니다. 개별 값을 구하려면 GetVariableNumberGetVariableCount 함수를 사용하십시오.

GetVariableCount
native final function int GetVariableCount(string VariableName)

해당 요청 변수의 변수 갯수를 반환합니다. 값이 1 초과일 경우, 각 값을 구하려면 GetVariableNumber 함수를 사용해야 합니다.

GetVariableNumber
native final function string GetVariableNumber(string VariableName, int Number, optional string DefaultValue)

해당 요청 변수값을 구합니다. 변수가 없거나 해당 번호 값이 없는 경우 기본값이 반환됩니다.

GetVariables
native final function GetVariables(out array varNames)

수신된 요청 변수 이름을 구합니다.

WebResponse

필드

헤더

이 배열에는 원격 호스트로 보낼 모든 헤더가 포함됩니다. 송신 당시의 헤더를 포함하며, 이 배열 디렉토리는 AddHeader 함수 등을 사용하여 수정할 수 있습니다. 콘텐츠가 송신될 때, 이 필드의 변경은 적용되지 않습니다.

IncludePath

웹서버가 보낼 수 있거나 처리할 수 있는 파일이 위치한 기본 디렉토리의 상대 경로입니다.

Connection

이 응답을 통한 WebConnection 인스턴스가 전송될 것입니다. 이 변수는 데이터 저장용이 아닙니다.

Functions

FileExists
native final function bool FileExists(string Filename)

해당 파일명이 디렉토리를 포함하여 웹에 존재하면 참을 반환합니다. ImageServer 클래스같은 고정 파일 서버의 경우, 해당 파일이 존재하는지 판단하여 WebApplication 이 HTTP 404 Not Found 에러를 낼 수 있게 하는데 사용할 수 있습니다.

Subst
native final function Subst(string Variable, coerce string Value, optional bool bClear)

IncludeUHTMLoadParsedUHTM 함수 도중 사용되는 치환 변수를 수정합니다. 셋째 옵션 인자를 통해 기존 선언된 변수를 지울 수 있습니다.

ClearSubst
native final function ClearSubst()

치환 변수로 등록된 모든 변수를 지웁니다.

IncludeUHTM
native final function bool   IncludeUHTM(string Filename)

UHTM 파일을 로드하여 저리합니다. 처리 결과가 바로 원격 호스트에 전송됩니다. 이 함수는 파일이 제대로 포함 및 처리되면 참 값을 반환합니다. 제공된 파일명은 IncludePath 필드에 선언된 대로 하위트리 안에서 유효해야 합니다.

IncludeBinaryFile
native final function bool   IncludeBinaryFile(string Filename)

파일을 그대로 원격 호스트에 보냅니다. IncludeUHTM 와는 달리 이 함수는 응답 해더가 전송되었는지를 확인하지 않습니다. 고로 이 메서드 호출 전, 헤더가 전송되었는지 확인하십시오.

LoadParsedUHTM
native final function string LoadParsedUHTM(string Filename)

IncludeUHTM 함수와 비슷하나, 주요 차이점은 처리 결과 파일을 반환하며, 원격 호스트로 보내지는 않습니다. 이를 통해 좀 더 복잡한 UHTM 템플릿을 만들 수 있습니다.

GetHTTPExpiration
native final function string GetHTTPExpiration(optional int OffsetSeconds)

현재 + OffsetSeconds 의 RFC 1123 날짜를 생성합니다. 이는 Expires 응답 헤더를 구성하는데 사용됩니다.

SendText
event SendText(string Text, optional bool bNoCRLF)

텍스트 데이터 스트링을 원격지에 보냅니다. bNoCRLF 가 참이면, DOS 줄 변환(0x13 0x10)이 추가되지 않습니다. 이 함수는 텍스트 데이터 전송 전에 응답 헤더를 보낼지 확인합니다.

SendBinary
event SendBinary(int Count, byte B[255])

바이너리 데이터를 원격지에 보냅니다. 이 함수는 헤더가 전송되는지 확인하지 않습니다.

HTTPResponse
function HTTPResponse(string Header)

HTTP 응답 코드를 보냅니다. 기본으로 200 OK 응답이 전송되지만, 이 함수를 사용하여 다른 응답을 보낼 수 있습니다. HTTP 응답 코드에 관한 상세 내용은 HTTP RFC 를 참조하십시오. HTTP 응답은 헤더 인자에 포함되어야 합니다. 예로:

HTTPResponse("HTTP/1.0 404 Not Found");

HTTPHeader
function HTTPHeader(string Header)

응답 헤더를 보냅니다. 헤더를 보내기 전 HTTP 응답 코드가 전송되었는지 확인합니다. 이 메서드는 헤더 전송용이 아닙니다. Headers 필드를 직접 수정하거나 AddHeader 함수를 통해 헤더를 큐에 넣는 것이 낫습니다.

AddHeader
function AddHeader(string header, optional bool bReplace=true)

헤더 목록에 헤더를 추가/갱신하며, 가능해지면 바로 전송됩니다. 해당 헤더를 완전히 삭제하려면, "X-Header:"와 같이 그냥 공백값을 주면 됩니다.

(Set-Cookie 헤더에 필요한) 이름이 같은 헤더를 여럿 추가하려면, 헤더 배열을 직접 수정해야 합니다.

SendHeaders
function SendHeaders()

큐의 헤더를 보냅니다. 이 함수는 내부적으로 SendStandardHeaders 에 의해 호출되므로, 직접 호출하지 마십시오.

HTTPError
function HTTPError(int ErrorNum, optional string Data)

400 Bad Request, 401 Unauthorized, 404 Not Found 와 같은 일반 HTTP 응답 코드를 보내는 간단 메서드입니다.

에러 메시지가 내장된 HTML 응답을 포함합니다. 응답 처리 메시지를 좀 더 친숙하게 바꾸고 싶을 경우, 이 메서드로 편리하게 구현할 수 있습니다.

SendStandardHeaders
function SendStandardHeaders( optional string ContentType, optional bool bCache )

표준 및 모든 커스텀 헤더를 보냅니다. 이 함수를 호출한 후에는 안전하게 응답 데이터를 포함할 수 있습니다.

ContentType 인자는 "Content-Type" 응답 헤더를 설정하는데 사용되며, 기본값은 "text/html" 입니다.

bCache 가 참인 경우, 캐쉬 명령을 포함한 헤더도 몇 포함되며, WebServer.ExpirationSeconds 값을 사용합니다.

"Connection: Close" 헤더만 강제할 수 있습니다. 기타 기본 헤더는 전부, 해당 헤더가 이미 설정되지 않았을 경우에만 사용됩니다.

Redirect
function Redirect(string URL)

302 Document Moved HTTP 응답을 전송하고, 클라이언트를 다른 URL로 돌려 주는 간편한 메서드입니다.

SentText
function bool SentText()

응답 데이터가 전송된 경우 참이 됩니다. 이후로는 더이상 헤더를 보낼 수 없습니다.

SentResponse
function bool SentResponse()

HTTP 응답 코드가 전송된 경우 참이 됩니다. 이후로는 응답 코드를 변경할 수 없습니다만, 헤더를 보낼 수는 있습니다.

WebServer

이 클래스는 상속용이 아니며, 중요 엘리먼트만 기술됩니다.

Fields

ServerName

이 옵션 환경설정 필드는 웹서버에 호스트명을 할당할 때 사용됩니다. 서버의 기능과는 전혀 상관 없습니다. ServerURL 필드만 로컬 IP 대신 이 이름으로 갱신하게 됩니다.

Applications

웹어플을 로드하는 정식 클래스 이름입니다. 이 변수는 ApplicationPaths 필드와 밀접하게 관련이 있습니다. 최대 10개의 웹어플을 정의할 수 있습니다.

ApplicationPaths

웹어플에 관련된 경로입니다. 처음 일치하는 경로명에 우선순위가 주어지므로 순서가 중요합니다.

bEnabled

이 환경설정 필드로 웹서버를 쉽게 켜고 끌 수 있습니다.

ListenPort

웹서버가 동작하는 포트를 정의합니다. 웹서버는 여기 정해진 포트를 통해서만 작동하게 됩니다.

MaxConnections

웹서버에서 지원하는 최대 동시 연결 수입니다. 이 수치를 너무 높게 잡으면 게임의 성능에 영향을 줄 수 있습니다.

DefaultApplication

사용할 기본 웹어플입니다. 이는 Applications 필드의 인덱스 입니다. 요청된 URL에 해당하는 웹어플이 없을 경우, 사용자를 이 웹어플로 돌립니다. 이 필드는 WebConnection 클래스에 의해 사용됩니다.

ExpirationSeconds

종료 시간을 정의용 일반 위치를 제공해 주는 환경설정 필드입니다. 요청에 대한 캐쉬 종료 시간을 설정하는 WebReponse 클래스에 의해 사용됩니다.

ServerURL

이 필드는 웹서버의 시작 도중 생성되며, 웹서버의 기본 url을 포함합니다.

함수

GetApplication
function WebApplication GetApplication(string URI, out string SubURI)

이 메서드는 해당 URI에 대한 웹어플을 반환합니다. 이 메서드의 둘째 인자는 웹어플 경로 전치사를 제외한 URI를 포함합니다.

WebConnection

이 클래스는 상속용이 아니며, 중요 엘리먼트만 기술됩니다.

필드

MaxValueLength

이 환경설정 가능 항목은 요청 값이 가질 수 있는 최대 길이를 정의하며, 이 수치를 초과한 값은 버려집니다. 이 값이 요청을 처리하기에 충분할 만큼 크게 잡혀야 함은 두말할 필요 없습니다. 이 값은 WebRequest 클래스에 의해 사용됩니다.

MaxLineLength

요청된 한 줄의 최대 길이입니다. GET 요청의 ('?' 이후의 전부) 변수 최대 길이 뿐 아니라, POST 데이터의 한 줄 길이도 제한합니다.