Benutzer mit den meisten Antworten
Autoupdate Download von geschützten Verzeichnissen/IsolatedStorage

Frage
-
Hallo Coder
Ich will meinen Anwendungen ein Update Programm spendieren und hänge da an 2 stellen.
1. Download von einem geschützten Verzeichnis welches mit htaccess definiert ist klappt nicht.
Private SUb Test Dim objRequest As Net.HttpWebRequest = Nothing Dim objResponse As System.Net.HttpWebResponse = Nothing Try objRequest = CType(Net.WebRequest.Create(strDnsName), Net.HttpWebRequest) objResponse = CType(objRequest.GetResponse, Net.HttpWebResponse) Catch ex as Exception End Try End Sub
Weder mit dem Benutzernamen und Password in der Adresse http://user:pass@www.test.com/update/test.xml noch wenn ich dem "Request" eine NetworkCredential zuweise funktioniert es nicht "Fehler 403"
objRequest.Credentials = New Net.NetworkCredential("username", "password")
Wo liegt da mein Fehler ?
2. Die Dateien welche gepatcht werden soll, wollte ich erst im Isolierten Speicher laden bevor ich sie in das Verzeichnis schiebe.
Da ein paar meiner Anwendungen auf TS-Servern / Citrix mit eingeschränkten Rechten laufen sollen, dachte ich mir das ich den Download erstmal in den isolierten Speicher abschließe bevor ich anfange die neuen Dateien zu tauschen. Ich versuche mit folgender Anweisung erstmal eine Datei zu erstellen was aber schon fehlschlägt.
Dim objTmpFile As IO.IsolatedStorage.IsolatedStorageFile ... ... objTmpFile = IO.IsolatedStorage.IsolatedStorageFile.GetStore(IO.IsolatedStorage.IsolatedStorageScope.User or IO.IsolatedStorage.IsolatedStorageScope.Application, Nothing)
Wo liegt da der Hase begraben?
Falls ich mit meiner Denkweise schon komplett falsch liege, wäre ich froh über andere Ansätze um die Vorgehensweise zu überdenken.
Gruß Thomas
- Bearbeitet tommytom73 Donnerstag, 2. August 2012 15:20
- Bearbeitet Thorsten DörflerModerator Freitag, 3. August 2012 06:12 Titel (was: Eigentlich sind es 2 Fragen)
Antworten
-
Hallo Robert
zu 2. Ich habe noch ein wenig probiert aber es war wenig zufriedenstellen.
- Ich habe es nur hinbekommen wenn ich die Zeile auf Appliction gesetzt habe.
isoFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.Application ,Nothing)“ - Ich konnte dann einen ein Verzeichnis im Isolierten Speicher erstellen mit
isoFile.CreateDirectory("download") - ich habe dann ein Stream Erzeugt
Dim isoStream as IsolatedStorageFileStream = isoFile.OpenFile("Update\template.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite) - Hier kam schon eine Exception "FileNotFound" welche mein Try-Block nicht gesehen hat, sondern er machte brav weiter in der Ausführung und legt die Datei an ("Habe ich mit dem Explorer überprüft")
- Dann habe ich den download gemacht und es wurde alles korrekt in der xml-File gespeichert.
- Nun habe ich versucht die Datei einzulesen oder zu kopieren/verschieben. Das Problem ich habe keine Eigenschaft oder Methode der Klasse gefunden welche mir den kompletten Verzeichnispfad zurückgibt. Und die "Copy / Move - Funktion" verlangt den vollständingen Verzeichnisnamen?
Ich habe das mit dem Isolierten Speicher begraben und habe das ganze auf den Temp-Ordner geändert, somit funktioniert es vorerst. In wie weit die Applikation Rechte hat in den Temp-Ordner zu schreiben auf einem TS/Citrix System habe ich noch nicht getestet. ("Ich kann mir keine Citrix-Testumgebung zu in der Firma aufbauen")
Ich danke Dir trotzdem erstmal für die Hilfe.
Gruß Thomas
PS: Ich lasse den Thread noch die Woche offen, vielleicht kann mir noch jemand zu der Frage 1 einen Tip geben.
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 9. August 2012 06:55
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 16:32
- Ich habe es nur hinbekommen wenn ich die Zeile auf Appliction gesetzt habe.
Alle Antworten
-
Hallo Thomas,
zu 1: 403 hat nichts direkt mit der Authentifizerung an sich zu tun. Poste mal bitte die genaue und vollständige Fehlermeldung.
Kannst Du die Datei denn mit einem Browser abrufen?
Zu 2: Bitte auch hier die genaue und vollständige Fehlermeldung posten.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan
Zu 1:
Nach dem ich auf unserem Webspace nochmal ein anderes Verzeichnis erstellt habe und als geschütztes Verzeichnis deklariert habe. Habe ich im IE die Webadresse mit Datei angegeben, und es kommt ein Dialog wo man Benutzername und Passwort eingeben muss. Nach dem ich dies getan habe zeigte er mir die xml-Datei im Browser an.
Per Code bekomme ich eine "System.Net.WebException" - "Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert."
Zu 2:
Hier bekomme ich eine "System.IO.IsolatedStorage.IsolatedStorageException" - "Die Anwendungsidentität des Aufrufers kann nicht bestimmt werden."
Bei beiden Exception gibt es keine "InnerException"
Gruß Thomas
-
Zu 2: Hier bekomme ich eine "System.IO.IsolatedStorage.IsolatedStorageException" - "Die Anwendungsidentität des Aufrufers kann nicht bestimmt werden."
Hallo tommytom73,
Zu 2 habe ich folgendes gefunden auf der MSDN Library: IsolatedStorageFile.GetUserStoreForApplication Method
„GetUserStoreForApplication is functionally equivalent to the following code:
isoFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.Application Or IsolatedStorageScope.User, Nothing)“
„In this code, the applicationIdentity parameter for GetStore(IsolatedStorageScope scope, Object applicationIdentity) is a null reference (Nothing in Visual Basic).“
In demselben Artikel unter Remarks:
„All assemblies associated with an application use the same isolated store when using this method. This method can be used only when the application identity can be determined - for example, when the application is published through ClickOnce deployment or is a Silverlight-based application. If you attempt to use this method outside a ClickOnce or Silverlight-based application, you will receive an IsolatedStorageException exception, because the application identity of the caller cannot be determined.“
„The application identity of the caller cannot be determined, because the ActivationContext property returned a null reference (Nothing in Visual Basic).“
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo Robert
zu 2. Ich habe noch ein wenig probiert aber es war wenig zufriedenstellen.
- Ich habe es nur hinbekommen wenn ich die Zeile auf Appliction gesetzt habe.
isoFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.Application ,Nothing)“ - Ich konnte dann einen ein Verzeichnis im Isolierten Speicher erstellen mit
isoFile.CreateDirectory("download") - ich habe dann ein Stream Erzeugt
Dim isoStream as IsolatedStorageFileStream = isoFile.OpenFile("Update\template.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite) - Hier kam schon eine Exception "FileNotFound" welche mein Try-Block nicht gesehen hat, sondern er machte brav weiter in der Ausführung und legt die Datei an ("Habe ich mit dem Explorer überprüft")
- Dann habe ich den download gemacht und es wurde alles korrekt in der xml-File gespeichert.
- Nun habe ich versucht die Datei einzulesen oder zu kopieren/verschieben. Das Problem ich habe keine Eigenschaft oder Methode der Klasse gefunden welche mir den kompletten Verzeichnispfad zurückgibt. Und die "Copy / Move - Funktion" verlangt den vollständingen Verzeichnisnamen?
Ich habe das mit dem Isolierten Speicher begraben und habe das ganze auf den Temp-Ordner geändert, somit funktioniert es vorerst. In wie weit die Applikation Rechte hat in den Temp-Ordner zu schreiben auf einem TS/Citrix System habe ich noch nicht getestet. ("Ich kann mir keine Citrix-Testumgebung zu in der Firma aufbauen")
Ich danke Dir trotzdem erstmal für die Hilfe.
Gruß Thomas
PS: Ich lasse den Thread noch die Woche offen, vielleicht kann mir noch jemand zu der Frage 1 einen Tip geben.
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Donnerstag, 9. August 2012 06:55
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 16:32
- Ich habe es nur hinbekommen wenn ich die Zeile auf Appliction gesetzt habe.