2015-01-23 3 views
7

Выполнение кода в веб-службы:.NET IO Exception "Неправильная подпись"

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

Причинение IO Exception, который просто говорит "Invalid Signature"

Я не могу найти что-либо через Google об этой ошибке при использовании статических методов File.

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

Не сгенерирует исключение, однако, что делает его казаться, что вы можете увидеть файл, но он не может открыть его для чтения.

Я действительно в недоумении за то, что «Invalid Signature» пытается сказать в этом случае.

Спасибо.

UPDATE:

Даже при использовании олицетворения, чтобы открыть читать файлы с сервера, он по-прежнему бросает исключение ввода-вывода с «недействительная подпись.»

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> 

Окружающая среда:

<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) 

и

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

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

Также выведите исключение для целей разъяснения.

+0

Вы уверены, что это текстовый файл? можете ли вы открыть его, скажем, в блокноте, и увидеть отчетливо содержание? – Tigran

+0

Есть ли заполнение InnerException? –

+0

Удалите весь текст пути и введите его вручную (я бы удалял его до '@' до окончания '' ', чтобы убедиться, что он начинает работать? У меня были проблемы в прошлом, копировать/вставлять скопированные непечатаемые символы в путь к файлу, который 'File.Open' не может обрабатывать. Я не помню, была ли ошибка, которую я получил, была« Invalid Signature ». –

ответ

0

Мне удалось получить то же сообщение об ошибке. Я думаю, что следующий метод помог, но просто может быть, что я заставляю приложение перезагружаться при каждом изменении. В моем случае я создавал путь к файлу, используя строку из базы данных SQL 2000.

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

Проблема остановился после того, как я изменил этот код на что-то (ужасный), как это:

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\\");` 
} 

Я обычно не работают с строкой форматирования на уровне байтов. Если кодирование действительно является проблемой, есть определенно лучшее решение.

Смежные вопросы