Sintomas
As colunas de URL e o Nome do Host de destino no log de proxy da web do Microsoft Forefront ameaça Management Gateway 2010 podem ser exibidas como valores ilegíveis. Esse problema ocorre quando os usuários acessam os sites da Web usando um nome de domínio internacionalizados (IDN) e as entradas de log são recuperadas do disco. Observação: IDNs são nomes de domínios que podem conter caracteres Unicode e são acessados usando o Punycode transcrição. Threat Management Gateway converte o nome Punycode em representação Unicode quando as entradas de log são exibidas no modo de exibição de log o Forefront TMG Management snap-in do Microsoft Management Console (MMC). No entanto, quando as entradas de log são recuperadas do disco, os caracteres não-ASCII na cadeia de caracteres Unicode são substituídos por um ponto de interrogação (?), como explicamos na seção "Causa".
Motivo
Esse problema ocorre porque as colunas de registro em Threat Management Gateway são salvos no formato ASCII e quando os registros de log são gravados em disco, os valores na URL e colunas de Nome do Host de destino são convertidas de Unicode em ASCII. Isso faz com que qualquer valor não-ASCII no valor a ser substituído por um ponto de interrogação (?).
Resolução
Para resolver esse problema, instale o pacote cumulativo de atualizações 4 do Forefront ameaça Management Gateway 2010 Service Pack 2 e, em seguida, executar o script na seção "Mais informações".
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Informações adicionais
Copie e cole o seguinte script em Notepad.exe e, em seguida, salve o arquivo como "SetPersistLogAsPunycode.vbs".
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const strVpsPropertyName = "PersistLogAsPunycode"Const Error_FileNotFound = &H80070002Set objArgs = wscript.ArgumentsfInvalidParameterValue = Falseif objArgs.Count > 0 then if objArgs(0) = "0" then fPersistLogAsPunycode = False elseif objArgs(0) = "1" then fPersistLogAsPunycode = True else fInvalidParameterValue = True end ifend ifif objArgs.Count <> 1 or fInvalidParameterValue then wscript.echo "Usage: SetPersistLogAsPunycode.vbs <0|1>" wscript.echo wscript.echo "Control how log fields that may contain punycode-encoded parts are" wscript.echo "stored in the persistent log." wscript.echo wscript.echo " 0 - Persist the applicable log fields as ASCII (the default behavior)" wscript.echo " 1 - Persist the applicable log fields as Punycode" wscript.Quit 2end ifset objLogging = CreateObject("FPC.Root").GetContainingArray().LoggingSet objVPSet = OpenVPSet(objLogging, strVpsGUID)objVPSet.Value(strVpsPropertyName) = fPersistLogAsPunycodeobjLogging.Savefunction OpenVPSet(objParent, strVpsGUID) Set objVPSets = objParent.VendorParametersSets On Error Resume Next Set OpenVPSet = objVPSets.Item(strVpsGUID) ' Save the Err properties in case it needs to be re-raised errNumber = Err.Number errSource = Err.Source errDescription = Err.Description errHelpFile = Err.HelpFile errHelpContext = Err.HelpContext On Error GoTo 0 if errNumber = Error_FileNotFound Then Set OpenVPSet = objVPSets.Add(strVpsGUID) Elseif errNumber < 0 Then ' An error other than "file not found" occured -- re-raise the error, ' this time not under "On Error Resume Next" Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext End Ifend function
Para habilitar o Threat Management Gateway manter as entradas de registro como valores Punycode, execute o seguinte comando:
cscript.exe SetPersistLogAsPunycode.vbs 1Para reverter Threat Management Gateway no comportamento dos campos de log como caracteres ASCII padrão, execute o seguinte comando:
cscript.exe SetPersistLogAsPunycode.vbs 0
Referências
Consulte a terminologia Microsoft usa para descrever as atualizações de software.