2017-10-12 4 views
0

Ich habe einen Dienst geschrieben, der auf einer Azure Windows Server 2016-VM ausgeführt wird. Wenn ein Auftrag aus der Warteschlange abgerufen wird, wird ein anderes Programm erstellt, das eine PDF generiert und auf der Festplatte speichert. Ich lese Konfigurationsdateien und speichere HTML-Dateien (die mit einer Drittanbieter-Komponente in PDF konvertiert werden) mit streamreader/streamwriter auf die Festplatte.Ich kann aus meinem .Net-Code keine Azure Files-Freigabe lesen/schreiben

Aber ich bekomme Versionen von Pfad konnte nicht Fehler für alle Festplattenzugriff auf die Azure-Dateien SMB-Freigabe gefunden werden. Wenn ich eine lokale Festplatte verwende, funktioniert es gut.

Ich habe doppelt überprüft, dass es den richtigen Pfad verwendet und dass der Pfad tatsächlich existiert (einfach P :).

Dies funktioniert seit Jahren auf einem gemeinsam genutzten App-Server. Ich versuche gerade jetzt, alles nach Azure zu verschieben.

Irgendwelche Ideen, was ich vermisse oder falsch mache?

EDIT:

Sieht aus wie ich in dieses Problem leite: https://serverfault.com/questions/177139/windows-service-cant-access-network-share

Aber ich kann die gleiche Lösung hier nicht ausgeführt werden, da mit Azure-Dateien kein Remote-Server ist, dass ich einen Benutzer hinzufügen .

Ein MSDN Forum-Benutzer schlug vor, Azure Storage Client Library zu verwenden. Meine Drittanbieter-PDF-Komponente kann nicht neu programmiert werden, um die Azure Client Storage-Bibliothek zu verwenden. Daher muss ich meine gesamte Arbeit auf dem lokalen Laufwerk ausführen und dann die endgültige PDF-Datei in Azure Files kopieren.

Dies wäre eine völlig akzeptable Lösung. Aber ich weiß nicht, wie ich es schaffen soll.

+0

Bearbeiten Sie Ihre Frage einige Details zeigen (wie Ihr Code, der tatsächliche Share-Konfiguration, etc). Ohne irgendwelche Details zu sehen, erhalten Sie nur Vermutungen. –

+0

Was meinst du genau mit "Dienst läuft auf einem Windows-Server"? Ein Windows-Dienst oder eine Webanwendung, die einen Webdienst bereitstellt? Ein weiterer Punkt: Ich habe verstanden, dass P: eine abgebildete Netzwerkfreigabe ist. Unter welchem ​​Benutzer haben Sie das Mapping erstellt? Ist derselbe Benutzer, unter dem der Dienst ausgeführt wird? Fügen Sie auch Informationen/vollständige Stapelverfolgung zu dem Fehler hinzu, den Sie erhalten haben –

Antwort

0

Sie können keinen normalen Dateizugriff auf eine SMB-Freigabe von Azure Files über einen Dienst oder ein Programm ausführen, das von einem Dienst erstellt wurde. Sie können Dateien von und zu Ihrem Speicherkonto programmgesteuert auf ein lokales Laufwerk kopieren. Sie müssen ein lokales Laufwerk verwenden, um Dateien zu erstellen und zu bearbeiten, und diese dann wieder in Ihr Speicherkonto kopieren.

Hier einige VB.Net Code eine lokale Datei in eine Azure Dateien Teilen zu kopieren (funktioniert, aber es nicht bereinigt):

Imports Microsoft.WindowsAzure.Storage 
Imports Microsoft.WindowsAzure.Storage.File 
Imports System.Configuration 

    Dim StorageAccount As CloudStorageAccount 
    Dim file As FileInfo 
    Dim fileClient As CloudFileClient 
    Dim share As CloudFileShare 
    Dim root As CloudFileDirectory 
    Dim dir As CloudFileDirectory 
    Dim cloudFile As CloudFile 

    Try 
     file = New FileInfo(InFileName) ' includes full path to file 
     StorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings.Get("AzureFilesConnString")) 

     fileClient = StorageAccount.CreateCloudFileClient() 
     share = fileClient.GetShareReference("sharename") 
     root = share.GetRootDirectoryReference() 
     dir = root.GetDirectoryReference("PDFs") ' Note that you apparently can't copy to the root (\) folder 

     cloudFile = dir.GetFileReference(OutFileName) ' Only the file name, not full URI 

     Using fs As FileStream = file.OpenRead() 
      cloudFile.UploadFromStream(fs) 
     End Using 
    Catch ex As StorageException 
     Debug.Print(ex.Message) 
     Debug.Print(ex.RequestInformation.Exception.ToString) 
    Catch ex As Exception 
     Debug.Print(ex.Message) 
    End Try 
Verwandte Themen