2015-01-23 15 views
7

Ausführen von Code in einem Web-Service:.NET IO Exception "Invalid Signature"

using (File.OpenRead(@"\\server\file.txt")) 
{ 
    // some stuff 
} 

Verursachung IO Ausnahme, das sagt nur "Invalid Signature"

Ich kann nichts über Google zu diesem Fehler finden Nachricht bei Verwendung von statischen Dateimethoden.

var exists = File.Exists(@"\\server\file.txt")) 

Hat eine Ausnahme aber nicht werfen, was es macht scheint, wie es dort die Datei sehen kann, aber es kann nicht zum Lesen öffnen.

Ich bin wirklich ratlos, was "Invalid Signature" in diesem Fall zu sagen versucht.

Danke.

UPDATE: „ungültige Signatur“

Auch Identitätswechsel mit Lese Dateien vom Server zu öffnen, ist es immer noch die IO Ausnahme mit wirft

Stack:

<StackTrace> 
    <StackFrame Index="6"> 
    <FileName /> 
    <Method>Void RenderImages(System.String, System.Nullable`1[System.Int32])</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>88</ILOffset> 
    </StackFrame> 
    <StackFrame Index="5"> 
    <FileName /> 
    <Method>Void .ctor(System.String, Boolean)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>0</ILOffset> 
    </StackFrame> 
    <StackFrame Index="4"> 
    <FileName /> 
    <Method>Void .ctor(System.String, System.Text.Encoding, Boolean, Int32)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>7</ILOffset> 
    </StackFrame> 
    <StackFrame Index="3"> 
    <FileName /> 
    <Method>Void .ctor(System.String, System.Text.Encoding, Boolean, Int32, Boolean)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>113</ILOffset> 
    </StackFrame> 
    <StackFrame Index="2"> 
    <FileName /> 
    <Method>Void .ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare, Int32, System.IO.FileOptions, System.String, Boolean, Boolean, Boolean)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>35</ILOffset> 
    </StackFrame> 
    <StackFrame Index="1"> 
    <FileName /> 
    <Method>Void Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>998</ILOffset> 
    </StackFrame> 
    <StackFrame Index="0"> 
    <FileName /> 
    <Method>Void WinIOError(Int32, System.String)</Method> 
    <LineNumber>0</LineNumber> 
    <ColumnNumber>0</ColumnNumber> 
    <ILOffset>571</ILOffset> 
    </StackFrame> 
</StackTrace> 

Umwelt:

<Environment> 
<DateTime.Now>1/23/2015 8:50:28 AM</DateTime.Now> 
<MachineName>xxxxx</MachineName> 
<UserDomainName>xxxxx</UserDomainName> 
<UserName>xxxx</UserName> 
<Executable>w3wp.exe</Executable> 
<ExecutableTimestamp>0101.01.0000</ExecutableTimestamp> 
<CommandLine>c:\windows\system32\inetsrv\w3wp.exe -ap "xxx.xxxxx.com" -v "v4.0" -l "webengine4.dll" -a \\.\pipe\iisipm45ad21f3-41a8-4e9a-a27c-fd0c679b337a -h "C:\inetpub\temp\apppools\xxxx.xxxx.com\xxxx.xxx.com.config" -w "" -m 0 -t 20 -ta 0</CommandLine> 
<OSVersion>Microsoft Windows NT 6.3.9600.0</OSVersion> 
<WorkingSet>168112128</WorkingSet> 
<EnvironmentVersion>4.0.30319.34003</EnvironmentVersion> 

using (File.Open(@"\\server\file.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite) 

und

File.WriteAllText(destinationFile, sb.ToString()); 

where destinationFile is \\server\sharename\generatedFileName.txt 

Zum Verdeutlichen auch die Ausnahme werfen.

+0

Sind Sie sicher, dass es sich um eine Textdatei handelt? Kannst du es in, sagen wir, Notizblock öffnen und klar Inhalt sehen? – Tigran

+0

Gibt es eine InnerException-Property, die ausgefüllt wird? –

+0

Lösche den gesamten Text des Pfades und tippe ihn manuell ein (ich würde vor dem '@' nach dem Ende '' 'löschen, um sicher zu sein), fängt es an zu arbeiten? Ich hatte Probleme in der Vergangenheit wo kopiert kopierte nicht druckbare Zeichen in den Dateipfad, den 'File.Open' nicht verarbeiten kann Ich kann mich nicht erinnern, ob der Fehler" Ungültige Signatur "war. –

Antwort

0

Ich habe es geschafft, die gleiche Fehlermeldung zu erhalten. Ich denke, dass die folgende Methode half, aber es könnte nur sein, dass ich die Anwendung zwinge, bei jeder Änderung neu zu laden. In meinem Fall habe ich den Dateipfad mithilfe einer Zeichenfolge aus einer SQL 2000-Datenbank erstellt.

var folderVar = myDataRow["folderVar"].ToString(); 
var di = new DirectoryInfo("\\\\domain.website.com\\shares\\" + folderVar + "\\subdir\\");` 

Das Problem gestoppt, nachdem ich diesen Code, um etwas (schrecklich) wie folgt geändert:

var folderVar = myDataRow["folderVar"].ToString(); 
if (folderVar == "ABC") 
{ 
    var di = new DirectoryInfo("\\\\domain.website.com\\shares\\ABC\\subdir\\");` 
} 
else if (folderVar == "BCD") 
{ 
    var di = new DirectoryInfo("\\\\domain.website.com\\shares\\BCD\\subdir\\");` 
} 

ich normalerweise nicht mit String-Formatierung auf Byte-Ebene arbeiten. Wenn Codierung wirklich das Problem ist, gibt es definitiv eine bessere Lösung.