2017-06-29 1 views
0

Meine Datei befindet sich unter "C: /Users/Username/Desktop/sample.pdf". Ich kann es manuell öffnen und es lädt gut. Wenn ich nun einen ungültigen Link, wie zum Beispiel file: ///sample.pdf, ansetze, der eindeutig nicht gefunden werden kann, öffnet die Hololens-App den Edge-Browser, der versucht, das PDF zu öffnen. Also, es ist klar, dass der Code funktioniert.URI korrekt, aber zur Laufzeit falsch?

Warum also ist dieses URI beim Laden in den Hololens zur Laufzeit falsch?

Hier ist die Ausnahme geworfen.

Ausnahme geworfen: 'System.ArgumentException' in Assembly-CSharp.dll

WinRT Informationen: Das bereitgestellten URI-Schema kann nicht gestartet werden. Unbehandelte 'Platform.InvalidArgumentException' Ausnahme wurde abgefangen! - 'Der Parameter ist falsch.'

Der Parameter ist falsch. Das bereitgestellte URI-Schema kann nicht gestartet werden. ', Absender:' null '. Fehlende Try/Catch-Blöcke.

Die heikle Sache mit diesen Ausnahmen in den Hololens ist manchmal scheinen nicht damit zu tun, was nicht funktioniert. Ich habe versucht, den Fehler zu googeln und nichts hilfreich erscheint.

EDIT:string uriToLaunch = @"file:///Data/myFiles/sample.pdf"; kehrt WinRT Informationen: Die bereitgestellten URI-Schema kann nicht gestartet werden. Der Parameter ist falsch.

string uriToLaunch = @"/Data/myFiles/sample.pdf"; gibt UriFormatException zurück: Ungültiger URI: Das Format des URI konnte nicht bestimmt werden.

HINWEIS Ich dachte, ich könnte den Edge-Browser von der App öffnen, aber ich habe Probleme beim Replizieren dieser Funktionalität. Das einzige, was, positiv reagiert, werden wir sagen, ist

@"ms-appx:///Data/myFiles/sample.pdf";

Es öffnet sich ein separates Dialogfeld zu öffnen, dass meine an die MS Speicher nehmen wird, um zu versuchen und eine App zu kaufen, die ms-appx Dateien öffnen .

EDIT 2:

FileOpenPicker openPicker = new FileOpenPicker(); 
    openPicker.ViewMode = PickerViewMode.Thumbnail; 
    openPicker.ViewMode = PickerViewMode.Thumbnail; 
    openPicker.FileTypeFilter.Add(".jpg"); 
    openPicker.FileTypeFilter.Add(".jpeg"); 
    openPicker.FileTypeFilter.Add(".png"); 

    Task task = new Task(
    async() => 
    { 
     StorageFile file = await openPicker.PickSingleFileAsync(); 
     if (file != null) 
     { 
      // Application now has read/write access to the picked file 
      Debug.Log("Picked photo: " + file.Name); 
     } 
     else 
     { 
      Debug.Log("Cancelled"); 
     } 
    }); 

    task.Start(); 
    task.Wait(); 

Ich habe versucht, diese einfache FileOpenPicker Implementierung, nur um zu testen und sehen, ob ich ein Arbeits bekommen konnte, zu keinem Erfolg.

Es wirft dies:

Ausnahme geworfen: 'System.Exception' in mscorlib.ni.dll

Unhandle 'Platform.COMException' Ausnahme gefangen! - 'ungültiger Fenstergriff.

EDIT 3: Das ist alles, was ich über den Fehler finden kann.

COMException Wenn die ErrorCode-Eigenschaft der Ausnahme den Wert 0x80070578 (ERROR_INVALID_WINDOW_HANDLE) hat, weist dies darauf hin, dass die Methode im UI-Thread nicht aufgerufen wurde.

EDIT 4: Jetzt ist es abstürzt und Rückkehr:

Ausnahme geworfen: 'System.Exception' in mscorlib.ni.dll

Das Programm '[4084] hololensapplication.exe' mit dem Verlassen der Code -1073741189 (0xc000027b).

+0

Wenn Sie "zur Laufzeit" sagen, welche Art von Anwendung ist das? WinForms, Browser, Konsole? – PhillipH

+0

Warum fügen Sie die Datei "file: ///" hinzu? Uri behandelt es ohne es zu übergeben. Zum Beispiel: https://stackoverflow.com/questions/1546419/convert-file-path-to-a-file-uri –

+0

Klingt, als ob Sie einen relativen Pfad verwenden möchten, um eine Verknüpfung zu Ihrem Dokument herzustellen. Wenn die Anwendungen keinen Zugriff auf Ihr C:/-Verzeichnis haben, weiß es nicht, wo nach der Datei gesucht werden soll. Dies scheint ein Problem mit einer ASP.NET-Anwendung zu sein, da eine DLL-Datei erwähnt wird. Versuchen Sie, Ihre Datei in Ihren Projektordner zu stellen und dort zu verlinken. –

Antwort

0

Wie @AVK darauf hinweist, sind UWP-Apps tatsächlich Sandboxed. Dies bedeutet, dass Dateien außerhalb ihrer lokalen Umgebung nicht erreichbar sind. Es gibt lokale bekannte Ordner auf den HoloLens, aber die einzige Möglichkeit, dies zu umgehen, ist die Verwendung einer Drittanbieter-App wie OneDrive. Tut mir leid, das ist keine leichtere Antwort!

Verwandte Themen