none
Autoupdate Download von geschützten Verzeichnissen/IsolatedStorage RRS feed

  • 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 



    Donnerstag, 2. August 2012 15:16

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.

    Mittwoch, 8. August 2012 17:11

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

    Donnerstag, 2. August 2012 16:42
    Moderator
  • 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

    Donnerstag, 2. August 2012 19:34
  • 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  Twitter Facebook
    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.

    Dienstag, 7. August 2012 08:06
    Moderator
  • 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.

    Mittwoch, 8. August 2012 17:11