Share via


브라우저 정의 파일 스키마(browsers 요소)

[이 설명서는 미리 보기 전용이며, 이후 릴리스에서 변경될 수 있습니다. 비어 있는 항목은 자리 표시자로 포함됩니다.]

브라우저 정의 파일에는 개별 브라우저에 대한 정의가 포함됩니다. 런타임에 ASP.NET은 요청 헤더에 있는 정보를 사용하여 요청을 보낸 브라우저의 형식을 확인합니다. 그런 다음 ASP.NET은 .browser 파일을 사용하여 브라우저의 기능을 확인합니다. ASP.NET 컨트롤 어댑터는 이 정보를 사용하여 장치 형식에 따라 ASP.NET 웹 서버 컨트롤의 동작을 적용할 수 있습니다. 예를 들어, 서버 컨트롤은 모바일 장치의 경우보다 Internet Explorer와 같은 그래픽 브라우저에 대해 다른 HTML을 생성할 수 있습니다.

참고

브라우저 정의 파일은 .NET Framework 버전 2.0에서 추가된 기능입니다.이전 버전의 .NET Framework에서는 browserCaps 요소를 사용하여 구성 파일에 브라우저 정의를 지정합니다.

<browsers>
    <browser id="browser name"
             parentID="parent browser name"
             refID="reference ID">
        <identification>
            <userAgent match="regular expression"
                       nonMatch="regular expression" />
            <header match="regular expression"
                    name="header name"
                    nonMatch="regular expression" />
            <capability match="regular expression"
                        name="capability name"
                        nonMatch="regular expression" />
        </identification>
        <capture>
            <userAgent match="regular expression" />
            <header match="regular expression"
                    name="header name" />
            <capability match="regular expression"
                        name="capability name" />
        </capture>
        <capabilities>
            <capability name="capability name"
                        value="capability value" />
        </capabilities>
        <controlAdapters markupTextWriterType="type name">
            <adapter adapterType="name of adapter class"
                     controlType="name of control class" />
        </controlAdapters>
        <sampleHeaders>
            <header name="header name"
                    value="header value" />
        </sampleHeaders>
    </browser>
    <gateway id="gateway ID"
             parentID="parent browser ID">
        <!-- Same child elements as for <browser>.
        <identification></identification>
        <capture></capture>
        <capabilities></capabilities>
        <controlAdapters></controlAdapters>
        <sampleHeaders></sampleHeaders>
         -->
    </gateway>
    <defaultBrowser id="Default" 
                    parentID="parent browser ID"
                    refID="reference ID" >
        <!-- Same child elements as for <browser>.
        <identification></identification>
        <capture></capture>
        <capabilities></capabilities>
        <controlAdapters></controlAdapters>
        <sampleHeaders></sampleHeaders>
         -->
    </defaultBrowser>
</browsers>

특성 및 요소

요소

설명

adapter

ASP.NET 웹 서버 컨트롤과 이 컨트롤을 현재 브라우저에 렌더링하는 데 사용되는 어댑터 사이의 매핑을 지정합니다. 예를 들어, Nokia.browser 파일에 있는 다음 NokiaMobileBrowserRainbow 브라우저 정의는 MenuAdapter 컨트롤 어댑터 클래스를 사용하여 Menu 서버 컨트롤을 브라우저에 맞게 조정하도록 지정합니다.

    <controlAdapters markupTextWriterType="System.Web.UI.XhtmlTextWriter" >
        <adapter
          controlType="System.Web.UI.WebControls.Menu"
          adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter">
        </adapter>
    </controlAdapters>

다음 표에서는 adapter 요소에 포함된 필수 특성에 대해 설명합니다.

특성설명
adapterType 필수 String 특성입니다.브라우저에 맞게 컨트롤을 조정하는 방법을 변경하는 데 사용되는 클래스의 이름을 지정합니다.
controlType 필수 String 특성입니다.어댑터에 매핑할 컨트롤의 이름을 지정합니다.

adapter 요소에는 자식 요소가 없습니다.

browser

단일 브라우저 정의를 정의합니다.

다음 표에서는 browser 요소에 포함될 수 있는 특성에 대해 설명합니다.

NoteNote
ASP.NET에 기본적으로 포함된 브라우저 정의 파일을 변경할 경우 서비스 팩 설치 시 해당 파일이 업데이트되어 변경 내용을 덮어쓰게 되므로 파일을 변경하지 마십시오.대신 새 .browser 파일을 만든 다음 새 브라우저 정의에 parentID 특성을 사용하여 설정을 상속하거나 refID 특성을 사용하여 기존 브라우저 정의에 기능을 추가해야 합니다.

브라우저 정의에는 id 및 parentID 특성이 정의되거나 refID 특성이 정의되어야 합니다.

특성설명
id parentID 특성을 사용할 경우에 필요한 String 특성입니다.정의되는 브라우저의 고유 이름을 지정합니다.
parentID id 특성을 사용할 경우에 필요한 String 특성입니다.설정을 상속할 부모 브라우저 정의의 고유 이름을 지정합니다.이러한 설정은 현재 브라우저 정의에서 덮어쓸 수 있습니다.부모 브라우저 정의는 다른 브라우저 정의 파일에 있어도 되지만 같은 응용 프로그램 또는 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 디렉터리에 반드시 정의되어 있어야 합니다.예를 들어, 다음 WebTV 브라우저 정의는 WebTV.browser 파일에 정의되어 있고IE2 부모 브라우저에 대한 정의는 같은 디렉터리에 있는 IE.browser 파일에 정의되어 있습니다. <browser id=" WebTV " parentID=" IE2 ">
refID
id 및 parentID 특성을 사용할 경우에는 사용할 수 없는 String 특성입니다.기존의 브라우저 정의 식별자를 지정합니다.기존 브라우저 정의에 새 기능을 연결하려는 경우 refID 특성을 사용합니다.동일한 refID를 여러 브라우저 노드에서 참조하도록 구성할 수 있습니다.refID 특성을 지정하면 browser 요소에 identification 자식 요소가 포함될 수 없습니다. refID 특성은 대상 요소를 바꾸지 않으며, 다른 특성 설정이 모두 적용된 후 이 특성의 설정이 적용됩니다.설정이 적용되는 순서는 다음과 같습니다.
  • 모든 <gateway parentID> 노드

  • 모든 <gateway refID> 노드

  • 모든 <browser parentID> 노드

  • 모든 <browser refID> 노드

다음 예제 정의에서는 IE.browser 파일에 있는 기존 IE 브라우저 정의에 새 기능을 추가합니다.
<browser refID="IE">
    <capabilities>
        <capability name="UseRichTextBox" value="true" />
    </capabilities>
    <controlAdapters>
        <adapter controlType="System.Web.UI.Calendar"
adapterType="ExampleAdapters.ExampleIECalendarAdapter"
        />
    </controlAdapters>
</browser>

browser 요소에는 다음과 같은 자식 요소 중 하나가 포함되거나 포함되지 않을 수 있습니다.

  • capabilities

  • capture

  • controlAdapters

  • identification

  • sampleHeaders

browsers

.browser 파일의 필수 루트 요소를 나타냅니다.

capabilities

현재 브라우저 정의에 설정할 기능 값을 정의합니다. 강력한 형식의 브라우저 기능 목록을 보려면 HttpCapabilitiesBase 클래스의 속성을 참조하십시오. 이러한 속성 대부분은 브라우저 정의 파일에서 요철식 대/소문자 구분을 사용합니다. 사용자 지정 기능 값을 추가할 수도 있습니다.

capabilities 요소에는 특성이 없습니다.

capabilities 요소에는 다음과 같은 자식 요소가 0개 이상 포함될 수 있습니다.

  • capability

capability(capabilities의 자식 요소)

현재 브라우저 정의에 설정할 단일 기능 값을 정의합니다. 예를 들어, IE.browser 파일의 IE 브라우저 정의에는 다음과 같은 기능이 정의되어 있습니다. 이 예제 정의는 Mozilla.browser 파일에 있는 Mozilla 브라우저 정의에서 다른 기능을 상속합니다. 달러 기호 다음에 나오는 중괄호(${}) 안에 텍스트를 포함하는 값은 identification 요소 "^Mozilla[^(]*\([C|c]ompatible;\s*MSIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'[^)]*)"의 userAgent 자식 요소에 있는 일치 식의 캡처된 값으로 바뀝니다.

    <capabilities>
        <capability name="browser"          value="IE" />
        <capability name="extra"            value="${extra}" />
        <capability name="isColor"          value="true" />
        <capability name="letters"          value="${letters}" />
        <capability name="majorversion"     value="${major}" />
        <capability name="minorversion"     value="${minor}" />
        <capability name="screenBitDepth"   value="8" />
        <capability name="type"             value="IE${major}" />
        <capability name="version"          value="${version}" />
    </capabilities>

capability 요소에는 다음과 같은 필수 특성이 있습니다.

특성설명
name 필수 String 특성입니다.기능의 이름을 지정합니다.강력한 형식의 브라우저 기능 목록을 보려면 HttpCapabilitiesBase 클래스의 속성을 참조하십시오.이러한 속성 대부분은 브라우저 정의 파일에서 요철식 대/소문자 구분(예: CanSendMail이 아니라 canSendMail)을 사용합니다.사용자 지정 기능 값을 추가할 수도 있습니다.
value 필수 String 특성입니다.기능의 값을 지정합니다.강력한 형식의 브라우저 기능 각각에 사용할 수 있는 값은 HttpCapabilitiesBase 클래스의 속성에 나열되어 있습니다.값 특성은 캡처된 변수를 "${}" 안에 포함할 수 있습니다.

capability 요소에는 자식 요소가 없습니다.

capability(identification 또는 capture의 자식 요소)

부모 브라우저 클래스에서 가져온 기능 값이 정규식과 일치되도록 지정합니다. 예를 들어, IE.browser 파일에 포함된 다음 IE5to9 브라우저 정의에서는 이 브라우저 정의가 클라이언트 브라우저와 일치하려면 IE 부모 정의의 majorversion 기능 설정이 이 정의에 포함된 정규식과 일치되어야 한다고 지정하는 capability 요소를 사용합니다. 이 예제 브라우저 정의에는 부모 정의에 있는 요소를 덮어쓰거나 요소에 추가되는 capability 요소가 있습니다.

    <browser id="IE5to9" parentID="IE">
        <identification>
            <capability name="majorversion" match="^[5-9]" />
        </identification>
        <!-- Capability elements. -->
    </browser>

다음 표에서는 capability 요소에 포함된 특성에 대해 설명합니다. match 또는 nonMatch 특성을 지정해야 하지만 두 특성을 함께 지정할 수는 없습니다.

특성설명
match nonMatch 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성 식별을 위해 부모 기능 설정과 일치되어야 하는 정규식을 지정합니다.정규식 서식 지정에 대한 자세한 내용은 .NET Framework 정규식을 참조하십시오.
name 필수 String 특성입니다.부모 기능의 이름을 지정합니다.
nonMatch match 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성은 capture 요소의 capability 자식 요소에 사용되지 않습니다.이 특성 식별을 위해 부모 기능 설정과 일치되지 않아야 하는 정규식을 지정합니다.

capability 요소에는 자식 요소가 없습니다.

capture

브라우저에 대한 정보를 캡처하는 데 사용할 수 있는 추가 header, userAgent 또는 capability 요소에 대한 정보를 정의합니다. 이 특성은 .NET Framework 2.0이 출시될 당시에 없었던 새 브라우저를 감지하려는 경우 유용합니다. 값을 캡처하기 위해 브라우저 정의는 ID 요소의 match 특성에 정규식 캡처를 포함할 수 있습니다. 예를 들어, IE.browser 파일에 정의된 다음 userAgent 요소는 사용자 에이전트 요청 헤더로부터 화면 높이(픽셀)를 캡처합니다.

    <capture>
        <userAgent match="PalmSource; Blazer 3\.0\)\s\d+;(?'screenPixelsHeight'\d+)x(?'screenPixelsWidth'\d+)$" />
    </capture>

브라우저 정의는 브라우저 클래스 구별에 사용되지 않는 요청 헤더를 검색하여 추가 정보를 캡처해야 할 수도 있습니다. 예를 들어, 다음 capture 요소는 OpenWave 휴대폰의 소프트 키 개수를 캡처합니다. 사용자가 Windows Mobile 기반 SmartPhone의 하드웨어 단추를 누르면 소프트 키는 해당되는 메뉴와 명령을 표시합니다.

    <capture>
        <header name="HTTP_X_UP_DEVCAP_NUMSOFTKEYS" 
                match="(?'softkeys'\d+)" />
    </capture>

capture 요소에는 특성이 없습니다.

capture 요소에는 다음과 같은 자식 요소가 0개 이상 포함될 수 있습니다.

  • header

  • userAgent

  • capability

controlAdapters

브라우저에 맞게 서버 컨트롤을 조정하는 데 사용할 컨트롤 어댑터를 정의합니다.

다음 표에서는 controlAdapters 요소에 포함된 특성에 대해 설명합니다.

특성설명
markupTextWriterType 선택적 String 특성입니다.사용할 태그 텍스트 작성기의 .NET Framework 형식을 지정합니다.기본 형식은 System.Web.UI.XhtmlTextWriter이지만 System.Web.UI.Html32TextWriter, System.Web.UI.HtmlTextWriter, System.Web.UI.ChtmlTextWriter 또는 이러한 클래스 중 하나에서 파생된 사용자 지정 클래스도 이 특성의 값이 될 수 있습니다.

controlAdapters 요소에는 다음과 같은 자식 요소가 0개 이상 포함될 수 있습니다.

  • adapter

defaultBrowser

Default.browser 파일의 기본 브라우저 기능을 정의합니다. 기본 브라우저 정의는 특정한 실제 브라우저와 일치하지 않지만 다른 정의에서 설정을 상속하기 위해 사용됩니다. 예를 들어, Default.browser 파일에는 다음과 같은 Default 브라우저 정의가 포함되어 있습니다.

    <defaultBrowser id="Default">
        <capabilities>
            <capability name="ecmascriptversion"   value="0.0" />
            <capability name="javascript"          value="false" />
            <capability name="jscriptversion"      value="0.0" />
        </capabilities>
    </defaultBrowser>

기본 브라우저 정의는 다른 여러 브라우저 정의에서 상속합니다. 예를 들어, Panasonic.browser 파일에는 다음과 같은 Panasonic 브라우저 정의가 포함되어 있습니다.

<browser id="Panasonic" parentID="Default">

다음 표에서는 defaultBrowser 요소에 포함된 특성에 대해 설명합니다.

특성설명
id 필수 String 특성입니다.브라우저의 고유 이름을 지정합니다.

defaultBrowser 요소에는 browser 요소와 동일한 자식 요소가 포함될 수 있습니다.

gateway

단일 게이트웨이 정의를 지정합니다. 일부 모바일 브라우저는 고유한 기능을 추가할 수 있는 게이트웨이를 통해 웹 서버에 연결됩니다. 여러 게이트웨이 요소에서 동일한 refID 특성을 참조할 수 있습니다.

gateway 요소에는 browser 요소와 동일한 특성 및 자식 요소가 포함될 수 있습니다. 예를 들어, 다음은 IE.browser 파일에 있는 IE3AK 게이트웨이에 대한 정의입니다.

    <gateway id="IE3AK" parentID="IE3">
        <identification>
            <capability name="extra" match="; AK;" />
        </identification>
        <capture>
        </capture>
        <capabilities>
            <capability name="ak"  value="true" />
        </capabilities>
    </gateway>
NoteNote
응용 프로그램의 브라우저 정의 파일에서 browser 요소의 parentID 특성이 %SystemRoot\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers 디렉터리에 있는 기본 정의 파일의 gateway 요소를 나타낼 수는 없습니다.그러나 parentID 특성이 동일한 App_Browsers 폴더의 다른 브라우저 정의 파일을 나타내도록 설정할 수는 있습니다.

header(identification 또는 capture의 자식 요소)

요청에서 특정 HTTP 헤더를 캡처하거나 이와 일치시킬 식을 지정합니다. 예를 들어, Default.browser 파일에 포함된 다음 Wml 브라우저 정의는 Accept 헤더를 두 정규식과 비교하여 일치하는 브라우저를 식별합니다.

<identification>
    <header name="Accept" 
            match="text/vnd\.wap\.wml|text/hdml" />
    <header name="Accept" 
            nonMatch="application/xhtml\+xml; profile|application/vnd\.wap\.xhtml\+xml" />
</identification>

다음 표에서는 header 요소에 포함된 특성에 대해 설명합니다. match 또는 nonMatch 특성을 지정해야 하지만 두 특성을 함께 지정할 수는 없습니다.

특성설명
match nonMatch 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성 식별을 위해 요청 헤더 값과 일치되어야 하는 정규식을 지정합니다.정규식 서식 지정에 대한 자세한 내용은 .NET Framework 정규식을 참조하십시오.
name 필수 String 특성입니다.헤더의 이름을 지정합니다.
nonMatch match 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성은 capture 요소의 capability 자식 요소에 사용되지 않습니다.이 특성 식별을 위해 요청 헤더 값과 일치되지 않아야 하는 정규식을 지정합니다.

header 요소에는 자식 요소가 없습니다.

header(sampleHeaders의 자식 요소)

이 브라우저의 단일 샘플 헤더를 지정합니다. 이 요소는 선택 사항이며 정보 제공용으로만 사용됩니다. 시뮬레이터나 디버깅 도구는 이 헤더 집합을 사용하여 요청에 맞게 브라우저를 에뮬레이션합니다.

다음 표에서는 header 요소에 포함된 특성에 대해 설명합니다.

특성설명
name 선택적 String 특성입니다.헤더의 이름을 지정합니다.
value 선택적 String 특성입니다.헤더의 값을 지정합니다.

header 요소에는 자식 요소가 없습니다.

identification

들어오는 요청에서 이 브라우저를 식별하는 방법에 대한 정보를 정의합니다.

identification 요소에는 특성이 없습니다.

identification 요소에는 다음과 같은 자식 요소가 한 개 이상 포함될 수 있습니다.

  • header

  • userAgent

  • capability

sampleHeaders

이 브라우저의 샘플 헤더 집합을 지정합니다. 이 요소는 선택 사항이며 정보 제공용으로만 사용됩니다. 시뮬레이터나 디버깅 도구는 이 헤더 집합을 사용하여 요청에 맞게 브라우저를 에뮬레이션합니다.

sampleHeaders 요소에는 특성이 없습니다.

sampleHeaders 요소에는 다음과 같은 자식 요소가 0개 이상 포함될 수 있습니다.

  • header

userAgent

요청의 사용자 에이전트 헤더와 일치시킬 식을 지정합니다. 예를 들어, IE.browser 파일에 포함된 다음 IE4 브라우저 정의에서는 요청과 함께 전송되는 사용자 에이전트 헤더로 브라우저를 식별하기 위해 "MSIE 4" 문자열을 사용합니다.

        <identification>
            <userAgent match="MSIE 4" />
        </identification>

다음 표에서는 userAgent 요소에 포함된 특성에 대해 설명합니다. match 또는 nonMatch 특성을 지정해야 하지만 두 특성을 함께 지정할 수는 없습니다.

특성설명
match nonMatch 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성 식별을 위해 사용자 에이전트와 일치되어야 하는 정규식을 지정합니다.정규식 서식 지정에 대한 자세한 내용은 .NET Framework 정규식을 참조하십시오.
nonMatch match 특성과 동일한 요소에서 사용할 수 없는 String 특성입니다.이 특성 식별을 위해 사용자 에이전트외 일치되지 않아야 하는 정규식을 지정합니다.이 특성은 capture 요소의 capability 자식 요소에 사용되지 않습니다.

userAgent 요소에는 자식 요소가 없습니다.

설명

기존 브라우저 정의 파일 중에서 원하는 조건에 맞는 파일이 없는 경우에는 아래의 예제 부분에 있는 코드를 사용하여 새 브라우저 정의 파일을 만들 수 있습니다.

보안 정보보안 정보

기본적으로 소스를 신뢰할 수 없는 타사 브라우저 정의 파일은 다운로드하거나 설치하지 않아야 하며익숙하지 않은 네임스페이스가 참조되지 않는지 새 브라우저 정의 파일을 검사해야 합니다.자세한 내용은 Securing Browser Definition Files를 참조하십시오.

미리 정의된 브라우저 정의 파일은 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers directory 디렉터리에 저장됩니다. 응용 프로그램 수준의 브라우저 정의 파일은 응용 프로그램의 App_Browsers 디렉터리에 배치될 수 있습니다. 이러한 두 위치에 있는 브라우저 정의 파일 이름의 확장명은 .browser여야 합니다. ASP.NET에 기본적으로 포함된 브라우저 정의 파일을 변경할 경우 서비스 팩 설치 시 해당 파일이 업데이트되어 변경 내용을 덮어쓰게 되므로 파일을 변경하지 마십시오. 이 문제를 방지하려면 파일을 변경하는 대신 새 .browser 파일을 만든 다음 새 browser 정의에 parentID 특성을 사용하여 설정을 상속하거나 refID 특성을 사용하여 기존 브라우저 정의에 기능을 추가해야 합니다.

런타임에 브라우저 정의 파일 정보는 BrowserCapabilitiesFactory 개체의 알려진 브라우저 컬렉션에 병합됩니다. 요청이 들어오면 ASP.NET에서는 요청한 브라우저를 요청 헤더로 식별한 다음 요청된 브라우저의 형식에 해당되는 HttpBrowserCapabilities 개체를 컴파일합니다. 이 작업은 빈 사전에서 시작하여 브라우저 정의 트리에 대해 다음과 같은 재귀적 단계를 적용하는 방식으로 수행됩니다.

  1. 일치 항목 검색이 성공한 것으로 항상 간주되는 기본 브라우저 정의에서 시작합니다.

  2. 이 브라우저 정의에 지정된 기능 값을 이 브라우저의 기능 사전에 병합합니다. 브라우저 정의에 지정된 값은 부모 정의에 설정된 값을 덮어씁니다.

  3. 각 자식 정의를 확인하여 일치하는 항목이 있는지 확인합니다. 일치하는 각 자식에 대해 1단계부터 다시 시작합니다. 브라우저 정의는 게이트웨이 정의보다 나중에 확인됩니다. 사용자 에이전트가 둘 이상의 브라우저 정의 또는 둘 이상의 게이트웨이 정의와 일치하면 런타임에 예외가 throw됩니다.

HttpBrowserCapabilities 개체는 캐시되어 동일한 형식의 브라우저에서 보내는 다른 요청에 다시 사용될 수 있습니다.

웹 응용 프로그램에서는 HttpRequest.Browser 속성을 사용하여 HttpBrowserCapabilities 개체의 현재 인스턴스에 액세스할 수 있습니다. 이 개체는 읽기 전용이며 각 기능에 대한 속성을 포함합니다. 웹 개발자가 HttpBrowserCapabilities 클래스에서 상속되는 사용자 지정 클래스를 만들어 HttpRequest.Browser 속성에 인스턴스를 저장할 수도 있습니다.

App_Browsers 디렉터리에 있는 .browser 파일을 변경하면 캐시가 무효화되고 다음 번 요청 시 응용 프로그램이 다시 컴파일됩니다. 그러나 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 디렉터리에 있는 .browser 파일이 변경된 경우에는 %SystemRoot%\Microsoft.NET\Framework\version\aspnet_regbrowsers.exe 도구를 사용하여 응용 프로그램을 직접 다시 컴파일하거나 BrowserCapabilitiesCodeGenerator 클래스를 사용하여 프로그래밍 방식으로 다시 컴파일해야 합니다.

참고

Web.config 파일에 browserCaps 요소를 사용하여 브라우저를 정의하는 기능은 .NET Framework 2.0에는 더 이상 사용되지 않지만 이전 버전과의 호환을 위해 계속 지원됩니다.이 요소의 데이터는 브라우저 정의 파일의 정보에 병합됩니다.

브라우저에서 응용 프로그램에 요청을 보내면 브라우저의 기능이 Browser 속성에 저장됩니다. 브라우저의 ID는 UserAgent 속성에 저장됩니다. ASP.NET 웹 서버 컨트롤은 기능 목록을 쿼리하여 서로 다른 브라우저에 맞게 컨트롤의 동작을 조정하는 방법을 결정합니다.

기능

강력한 형식의 브라우저 기능 목록을 보려면 HttpCapabilitiesBase 클래스의 속성을 참조하십시오. 이러한 속성은 브라우저 정의 파일에서 요철식 대/소문자 구분을 사용합니다. 예를 들어, 브라우저 정의 파일에 BackgroundSounds 기능을 지정하려면 backgroundSounds와 같이 입력합니다.

사용자 지정 기능을 정의할 수도 있습니다.

웹 응용 프로그램에서는 다음과 같은 두 가지 방법 중 하나로 HttpBrowserCapabilities 개체에서 기능 값을 검색할 수 있습니다.

  • 기능 사전에 액세스하여 값을 검색합니다. 이 방법은 사용자 지정 기능에 대해 사용할 수 있습니다.

    예를 들어, 현재 클라이언트 브라우저의 ECMAScript(JavaScript) 기능 값을 가져오려면 다음과 같은 코드를 사용할 수 있습니다.

    String cap_javascript = Request.Browser["javascript"];
    
  • 기능을 래핑하는 강력한 형식의 속성을 호출하여 값을 검색합니다.

    예를 들어, 현재 클라이언트 브라우저의 ECMAScript 기능 값을 가져오려면 다음과 같은 코드를 사용할 수 있습니다.

    String cap_javascript = Request.JavaScript;
    

기본 구성

.NET Framework에는 미리 정의된 브라우저 정의 파일이 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 디렉터리에 제공됩니다. 필요한 경우 응용 프로그램의 App_Browsers 디렉터리에 응용 프로그램 수준의 브라우저 정의 파일을 만들 수 있습니다. 특수 ASP.NET 디렉터리에 대한 자세한 내용은 ASP.NET Web Site Layout을 참조하십시오.

다음 코드 예제에서는 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 디렉터리에 있는 Generic.browser 파일입니다.

참고

%SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 디렉터리에 있는 기존 브라우저 정의 파일은 변경하지 마십시오.이러한 파일은 .NET Framework에서 관리합니다.

<browsers>
    <browser id="GenericDownlevel" parentID="Default">
        <identification>
            <userAgent match="^Generic Downlevel$" />
        </identification>
        <capture>
        </capture>
        <capabilities>
            <capability name="cookies"
                        value="false" />
            <capability name="ecmascriptversion" 
                        value="1.0" />
            <capability name="tables"
                        value="true" />
            <capability name="type"
                       value="Downlevel" />
        </capabilities>
        <controlAdapters>
        <adapter controlType="System.Web.UI.WebControls.Menu"
                     adapterType="System.Web.UI.WebControls.Adapters.MenuAdapter" />
        </controlAdapters>
    </browser>
    <browser id="Mozilla" parentID="Default">
        <identification>
            <userAgent match="Mozilla" />
        </identification>
        <capture>
        </capture>
        <capabilities>
            <capability name="browser"
                        value="Mozilla" />
            <capability name="cookies"
                        value="false" />
            <capability name="inputType"
                        value="keyboard" />
            <capability name="isColor"
                        value="true" />
            <capability name="isMobileDevice"
                        value="false" />
            <capability name="maximumRenderedPageSize"
                        value="300000" />
            <capability name="screenBitDepth"
                        value="8" />
            <capability name="supportsBold"
                        value="true" />
            <capability name="supportsCss"
                        value="true" />
            <capability name="supportsDivNoWrap"
                        value="true" />
            <capability name="supportsFontName"
                        value="true" />
            <capability name="supportsFontSize"
                        value="true" />
            <capability name="supportsImageSubmit"
                        value="true" />
            <capability name="supportsItalic"
                        value="true" />
            <capability name="type"
                        value="Mozilla" />
        </capabilities>
    </browser>
</browsers>

예제

다음 코드 예제는 새 브라우저 정의 파일을 만드는 데 사용할 수 있는 빈 .browser 파일입니다. 브라우저 파일에 순환 참조를 만들지 않도록 주의해야 합니다.

<?xml version="1.0" encoding="utf-8"?>

<browsers>
    <browser id="NewBrowser" parentID="Mozilla">
        <identification>
            <userAgent match="Unique User Agent Regular Expression" />
        </identification>

        <capture>
            <userAgent match="NewBrowser (?'version'\d+\.\d+)" />
        </capture>

        <capabilities>
            <capability name="browser" value="My New Browser" />
            <capability name="version" value="${version}" />
        </capabilities>
    </browser>

    <browser refID="Mozilla">
        <capabilities>
            <capability name="xml" value="true" />
        </capabilities>
    </browser>
</browsers>

요소 정보

구성 섹션 처리기

System.Web.Configuration.HttpCapabilitiesSectionHandler

구성 멤버

HttpRequest.Browser

HttpCapabilitiesBase.Browsers

HttpCapabilitiesBase.Capabilities

System.Web.HttpBrowserCapabilities

구성 가능한 위치

컴퓨터 루트 수준의 Browsers 디렉터리

응용 프로그램 수준의 App_Browsers 디렉터리

요구 사항

IIS(인터넷 정보 서비스) 버전 5.0 이상

.NET Framework 버전 2.0 또는 이후 버전

Visual Studio 2005 또는 이후 버전

참고 항목

작업

How to: Detect Browser Types in ASP.NET Web Pages

참조

Browsers

Capabilities

HttpCapabilitiesSectionHandler

HttpBrowserCapabilities

deviceFilters 요소(ASP.NET 설정 스키마)

mobileControls 요소(ASP.NET 설정 스키마)

browserCaps 요소(ASP.NET 설정 스키마)

개념

ASP.NET Web Server Controls and Browser Capabilities

Securing Browser Definition Files

Configuration Inheritance

ASP.NET Device Filtering Overview

Architectural Overview of Adaptive Rendering

기타 리소스

ASP.NET for Mobiles : 공식 Microsoft ASP.NET 사이트

일반 구성 설정(ASP.NET)

ASP.NET 구성 설정