Symptomen
De URL en de Doelhost kolommen in de web proxy-logboekbestand van Microsoft Forefront Threat Management Gateway 2010 kunnen worden weergegeven als waarden onleesbaar. Dit probleem doet zich voor wanneer gebruikers toegang krijgen websites tot met behulp van een geïnternationaliseerde domeinnaam (IDN) en de vermeldingen in het logboek van de schijf worden opgehaald. Opmerking IDN's zijn domeinnamen die Unicode-tekens kunnen bevatten en zijn toegankelijk via Punycode schrijffouten. Threat Management Gateway zet de naam Punycode in de Unicode-weergave, wanneer de logboekvermeldingen worden weergegeven in de weergave van de registratie in het beheer van Forefront TMG-module van Microsoft Management Console (MMC). Echter wanneer de logboekvermeldingen worden opgehaald van schijf, worden niet-ASCII-tekens in de Unicode-tekenreeks vervangen door een vraagteken (?), terwijl we in de sectie 'Oorzaak uitleggen'.
Oorzaak
Dit probleem treedt op omdat de kolommen logboekregistratie in Threat Management Gateway in ASCII-indeling worden opgeslagen, en de records in het logboek zijn geschreven naar de schijf, de waarden in de URL en Doelhost kolommen uit Unicode worden geconverteerd naar ASCII. Dit zorgt ervoor dat elke niet-ASCII-waarde in de waarde die moet worden vervangen door een vraagteken (?).
Oplossing
Rollup 4 voor Forefront Threat Management Gateway 2010 Service Pack 2 installeert en vervolgens het script uitvoeren in de sectie 'Meer informatie' voor dit probleem.
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Meer informatie
Kopieer en plak het volgende script in Notepad.exe en vervolgens het bestand opslaan als '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
Als u Threat Management Gateway om de vermeldingen in het logboek als Punycode-waarden, voert u de volgende opdracht:
cscript.exe SetPersistLogAsPunycode.vbs 1Als u wilt terugkeren Threat Management Gateway om het standaardgedrag van logboekregistratievelden als ASCII-tekens, moet u de volgende opdracht uitvoeren:
cscript.exe SetPersistLogAsPunycode.vbs 0
Verwijzingen
Zie de Microsoft terminologie gebruikt om softwareupdates te beschrijven.