Поделиться через


Практическое руководство. Изменение файлов Web.Config для инструментирования и профилирования динамически скомпилированных веб-приложений ASP.NET

Метод инструментирования средств профилирования Visual Studio можно использовать для сбора подробных сведений об использовании времени, данных о выделении памяти .NET, а также времени существования объектов .NET, предоставляемых динамически скомпилированными веб-приложениями ASP.NET.

В этом разделе описывается процедура изменения файла конфигурации web.config для обеспечения возможности инструментирования и профилирования веб-приложений ASP.NET.

ПримечаниеПримечание

При использовании для профилирования метода выборки и инструментировании предварительно скомпилированного модуля ASP.NET файл web.config изменять не нужно.

Корневым элементов файла web.config является элемент configuration.Для инструментирования и профилирования динамически скомпилированных веб-приложений ASP.NET следует добавить или изменить следующие элементы.

  • Элемент configuration/runtime/assemblyBinding/dependentAssembly, который позволяет идентифицировать сборку Microsoft.VisualStudio.Enterprise.ASPNetHelper, управляющую профилированием.Элемент dependentAssembly содержит два дочерних элемента: assemblyIdentity и codeBase.

  • Элемент configuration/system.web/compilation, позволяющий идентифицировать этап компиляции после обработки профилировщиком для целевой сборки.

  • Два элемента add, позволяющие идентифицировать расположение средств профилирования, которые добавляются в раздел configuration/appSettings.

Рекомендуется создать копию исходного файла web.config, которую можно будет использовать для восстановления конфигурации приложения.

Добавление сборки ASPNetHelper в качестве элемента configuration/runtime/assemblyBinding/dependentAssembly

  1. При необходимости добавьте элемент runtime в качестве дочернего элемента configuration. Если потребности в этом нет, перейдите к следующему шагу.

    У элемента runtime отсутствуют атрибуты.У элемента configuration может быть только один дочерний элемент runtime.

  2. При необходимости добавьте элемент assemblyBinding в качестве дочернего элемента runtime. Если потребности в этом нет, перейдите к следующему шагу.

    У элемента runtime может быть только один элемент assemblyBinding.

  3. Добавьте следующее имя и значение атрибута в элемент assemblyBinding:

    Имя атрибута

    Значение атрибута

    Xmlns

    urn:schemas-microsoft-com:asm.v1

  4. Добавьте элемент dependentAssembly в качестве дочернего элемента assemblyBinding.

    У элемента dependentAssembly отсутствуют атрибуты.

  5. Добавьте элемент assemblyIdentity в качестве дочернего элемента dependentAssembly.

  6. Добавьте следующие имена и значения атрибута в элемент assemblyIdentity.

    Имя атрибута

    Значение атрибута

    name

    Microsoft.VisualStudio.Enterprise.ASPNetHelper

    PublicKeyToken

    b03f5f7f11d50a3a

    culture

    Neutral

  7. Добавьте элемент codeBase в качестве дочернего элемента dependentAssembly.

  8. Добавьте следующие имена и значения атрибута в элемент codeBase:

    Имя атрибута

    Значение атрибута

    version

    10.0.0.0

    href

    PathToASPNetHelperDll

    PathToASPNetHelperDll — это URL-адрес файла библиотеки Microsoft.VisualStudio.Enterprise.ASPNetHelper.dll.Если программа Visual Studio установлена в расположение по умолчанию, параметр href должен иметь значение C:/Program%20Files/Microsoft%20Visual%20Studio%202010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.ASPNetHelper.DLL.

    <configuration>
        <runtime>
            <assemblyBinding 
                xmlns="urn:schemas-microsoft-com:asm.v1"
            >
                <dependentAssembly>
                    <assemblyIdentity                         name="Microsoft.VisualStudio.Enterprise.ASPNetHelper" 
                        publicKeyToken="b03f5f7f11d50a3a"                         culture="neutral" 
                    />
                    <codeBase 
                        version="10.0.0.0"
                        href="file:///C:/Program%20Files/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.ASPNetHelper.DLL" 
                    />
                </dependentAssembly>
            </assemblyBinding>
        </runtime>

Добавление этапа после обработки в профилировщике в элемент configuration/system.web/compilation

  1. При необходимости добавьте элемент system.web в качестве дочернего элемента configuration. Если потребности в этом нет, перейдите к следующему шагу.

    У элемента system.web отсутствуют атрибуты.У элемента configuration может быть только один дочерний элемент system.web.

  2. При необходимости добавьте элемент compilation в качестве дочернего элемента system.web. Если потребности в этом нет, перейдите к следующему шагу.

    У элемента system.web может быть только один дочерний элемент compilation.

  3. Удалите существующие атрибуты из элемента compilation и добавьте атрибут со следующим именем и значением.

    Имя атрибута

    Значение атрибута

    assemblyPostProcessorType

    Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.ASPNetHelper, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

    <configuration>
        <runtime>
        . . .
        </runtime>
        <system.web>
            <compilation
                assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter,
                    Microsoft.VisualStudio.Enterprise.ASPNetHelper,
                    Version=10.0.0.0,
                    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
            />
        </system.web>
    <configuration>

Добавление параметров расположения профилировщика в элемент configuration/appSettings

  1. При необходимости добавьте элемент appSettings в качестве дочернего элемента configuration. Если потребности в этом нет, перейдите к следующему шагу.

    У элемента appSettings отсутствуют атрибуты.У элемента configuration может быть только один дочерний элемент appSettings.

  2. Добавьте элемент add в качестве дочернего элемента appSettings.

  3. Добавьте следующие имена и значения атрибута в элемент add.

    Имя атрибута

    Значение атрибута

    key

    Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation

    value

    PerformanceToolsFolder\VSInstr.Exe

  4. Добавьте другой элемент add в качестве дочернего элемента appSettings.

  5. Добавьте следующие имена и значения атрибута в этот элемент add.

    Имя атрибута

    Значение атрибута

    key

    Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrTools

    value

    PerformanceToolsFolder

    PerformanceToolsFolder — это путь к исполняемым файлам профилировщика.Если программа Visual Studio установлена в расположение по умолчанию, это значение равно C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Performance Tools

    <configuration>
        <runtime>
        . . .
        </runtime>
        . . .
        <system.web>
        </system.web>
        <appSettings>
            <add
                key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation"
                value="C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\vsinstr.exe"
        />
            <add
                key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrTools"
                value="C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\"
            />
        </appSettings>
    </configuration>

Пример

Ниже приведено полное содержимое файла web.config, позволяющего выполнять инструментирование и профилирование динамически скомпилированных веб-приложений ASP.NET.В этом примере предполагается, что перед изменением в файле не было других параметров.

<?xml version="1.0"?>
    <configuration>
        <runtime>
            <assemblyBinding 
                xmlns="urn:schemas-microsoft-com:asm.v1"
            >
                <dependentAssembly>
                    <assemblyIdentity 
                        name="Microsoft.VisualStudio.Enterprise.ASPNetHelper" 
                        publicKeyToken="b03f5f7f11d50a3a"
                        culture="neutral" 
                    />
                    <codeBase 
                        version="10.0.0.0"
                        href="file:///C:/Program%20Files/Microsoft%20Visual%20Studio%2010.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.ASPNetHelper.DLL" 
                    />
                </dependentAssembly>
            </assemblyBinding>
        </runtime>
        <system.web>
            <compilation
                assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter,
                    Microsoft.VisualStudio.Enterprise.ASPNetHelper,
                    Version=10.0.0.0,
                    Culture=neutral,
                    PublicKeyToken=b03f5f7f11d50a3a" 
            />
        </system.web>
        <appSettings>
            <add
                key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation"
                value="C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\vsinstr.exe"
            />
            <add
                key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrTools"
                value="C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\"
            />
        </appSettings>
    </configuration>

См. также

Задачи

Практическое руководство. Инструментирование динамически скомпилированного веб-приложения ASP.NET и сбор профилировщиком подробных данных о времени с помощью командной строки

Практическое руководство. Инструментирование динамически скомпилированного веб-приложения ASP.NET и сбор данных об использовании памяти с помощью командной строки профилировщика