SymProxy 自动安装

这些步骤与下面的 Install.cmd 脚本一起有助于自动将 SymProxy 安装到默认 IIS 安装。 可能需要根据环境的特定需求调整这些步骤。

  1. 创建 D:\SymStore\Symbols 文件夹。

    • 向所有人授予读取权限

    • 向 SymProxy 应用池用户帐户授予读取/写入权限 (域\用户)

  2. 将 D:\SymStore\Symbols 共享为符号。

    • 向所有人授予读取 (或更具体的)
  3. ((可选)) 在 D:\SymStore\Symbols 中创建名为 index2.txt 的空文件。

  4. ((可选)) 创建名为 %WINDIR%\system32\inetsrv\symsrv.yes 的空文件。 这接受 Microsoft 公共符号存储的 EULA。

  5. 确定 Install.cmd 的参数并运行它。

  6. 使用创建的服务器名称配置客户端符号路径。

    SRV*\\MachineName\Symbols*https://MachineName/Symbols
    

Install.cmd 脚本需要 3 个参数:

  • 虚拟目录路径 (例如 D:\SymStore\Symbols )
  • 应用程序池) 的用户名 (
  • 应用程序池) 的密码 (

若要清除 MIME 类型继承,需要一个 XML 文件来驱动关联的 AppCmd.exe 命令。 将下面所示的 staticContentClear.xml 文件放在 Install.cmd 脚本所在的文件夹中以实现此结果。

Install.Cmd 参数用法示例:

Install.cmd D:\SymStore\Symbols CONTOSO\SymProxyService Pa$$word

Install.cmd

@echo off

SET VirDirectory=%1
SET UserName=%2
SET Password=%3

::
::  SymProxy dll installation. 
::

copy symproxy.dll %windir%\system32\inetsrv
copy symproxy.man %windir%\system32\inetsrv
copy symsrv.dll %windir%\system32\inetsrv

lodctr.exe /m:%windir%\system32\inetsrv\symproxy.man
wevtutil.exe install-manifest %windir%\System32\inetsrv\symproxy.man
regedit.exe /s symproxy.reg

::
::  Web server Configuration
::

IF not exist %VirDirectory% mkdir %VirDirectory%

rem Make the 'Default Web Site'
%windir%\system32\inetsrv\appcmd.exe add site -site.name:"Default Web Site" -bindings:"http/*:80:" -physicalPath:C:\inetpub\wwwroot

rem Enabled Directory Browsing on the 'Default Web Site'
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/directoryBrowse /enabled:"True"

rem Make the 'SymProxy App Pool'
%windir%\system32\inetsrv\appcmd.exe add apppool -apppool.name:SymProxyAppPool -managedRuntimeVersion:
%windir%\system32\inetsrv\appcmd.exe set apppool -apppool.name:SymProxyAppPool -processModel.identityType:SpecificUser -processModel.userName:%UserName% -processModel.password:%Password% 

rem Make the 'Symbols' Virtual Directory and assign the 'SymProxy App Pool'
%windir%\system32\inetsrv\appcmd.exe add app -site.name:"Default Web Site" -path:/Symbols -physicalpath:%VirDirectory%
%windir%\system32\inetsrv\appcmd.exe set app -app.name:"Default Web Site/Symbols" -applicationPool:SymProxyAppPool

rem Disable 'web.config' for folders under virtual directories in the 'Default Web Site'
%windir%\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/sites "/[name='Default Web Site'].virtualDirectoryDefaults.allowSubDirConfig:false

rem Add the 'SymProxy ISAPI Filter'
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/isapiFilters /+"[name='SymProxy',path='%windir%\system32\inetsrv\SymProxy.dll',enabled='True']

rem Clear the MIME Types on the 'Default Web Site'
%windir%\system32\inetsrv\appcmd.exe set config -in "Default Web Site" < staticContentClear.xml

rem Add * to the MIME Types of the 'Default Web Site'
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:staticContent /+"[fileExtension='.*',mimeType='application/octet-stream']"

staticContentClear.xml

<?xml version="1.0" encoding="UTF-8"?>
<appcmd>
    <CONFIG CONFIG.SECTION="system.webServer/staticContent"                  path="MACHINE/WEBROOT/APPHOST">
        <system.webServer-staticContent>
            <clear />
        </system.webServer-staticContent>
    </CONFIG>
</appcmd>    

测试 SymProxy 安装

系统现在应该已准备好获取和提供文件。 若要测试它,请首先通过运行iisreset.exe重启 IISAdmin 服务。 这将使用当前 IIS 和 SymProxy 配置重新加载 ISAPI 筛选器。

将调试器配置为使用此符号路径:

srv*\\MachineName\Symbols*https://MachineName/Symbols

如果启用 MissTimeout (默认情况下将其设置为 300 秒) ,则运行 .reload /f 命令两次应该会导致第二次执行速度要快得多。

若要查看被引用的 PDB 的位置,请使用 lm (list modules) 命令。 PDB 的路径应全部以 \\MachineName\Symbols 开头。

如果在网站上启用了目录浏览,请浏览到 https://MachineName/Symbols 以查看缓存的文件。

打开性能监视器并查看符号代理计数器。

打开事件查看器并查看 Microsoft\Windows\SymProxy 事件。

另请参阅

安装 SymProxy