Ich versuche, einem seltsamen Verhalten auf einer Maschine auf den Grund zu gehen. Ich habe eine triviale Konsolenanwendung, die interaktiv ausgeführt wird, aber wenn ich sie über WMI aufruft, wird sie sofort gestartet und beendet.Fusion Log Assembly Binder Error - Bindungsergebnis: hr = 0x1. Falsche Funktion
Ich habe das Fusionsprotokoll aktiviert, da Procmon nicht entschlüsselt wurde. Ich sehe den folgenden Fehler:
*** Assembly Binder Log Entry (31-01-2015 @ 19:22:51) ***
The operation was successful.
Bind result: hr = 0x1. Incorrect function.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable C:\CMCBOOTSTRAP\Cmc.Installer.Agent.Console.exe
--- A detailed error log follows.
BEGIN : Native image bind.
END : Incorrect function. (Exception from HRESULT: 0x00000001 (S_FALSE))
Was ist die Ursache für "falsche Funktion"? Was kann ich noch sehen, um festzustellen, warum diese Anwendung beim Start über WMI effektiv abstürzt?
Und ich meine trivial ...
class Program
{
static void Main(string[] args)
{
Thread.Sleep(30000);
}
}
Umwelt ist Windows Server 2012 R2 und .NET 4.5.
Sie sollten die Optionen zum Ausführen von Image-Dateien verwenden, um einen Debugger zu starten, wenn Ihr Prozess startet. Mit Windbg können Sie es als Debugging-Server starten, damit Sie von einer anderen Sitzung aus eine Verbindung zu ihm herstellen können. Nicht so einfach einzurichten, aber es gibt dir direkte Einblicke. Eine weitere Möglichkeit besteht darin, Ihre App zu profilieren und zu prüfen, wohin die CPU mit ETW geht. –
Ich habe nur über einen Terminalserver-Gateway eine Verbindung zu diesem Computer, und der Computer hat keinen Internetzugang. Daher ist es unwahrscheinlich, dass ein Debugger remote verbunden wird. Ich bin mir nicht sicher, was Sie mit dem Profiler vorschlagen. Was würde ich suchen, wenn die Anwendung eine Zeile Code ist? Was ist ETW? –
Wenn Sie Ihren Prozess über ETW starten, wird es normalerweise unter Sitzung Null gestartet, wo eine Debugger-Benutzeroberfläche keine Desktopzugriffe hat und Sie den Debugger nicht verwenden können. Aber Sie können Windbg als Debugging-Server-Prozesse starten und Sie können lokal über TCP oder Named Pipes zu verbinden, so dass Sie sehen können, was vor sich geht. ETW ist Ereignisverfolgung für Windows. Sie können z.B. PerfView. Wenn dort verwaltete Ausnahmen auftreten, werden sie in den Profiling-Daten angezeigt. Ausnahmewege neigen dazu, langsam zu sein, die Ihnen eine Idee geben könnten, was falsch lief. –