편집을 죽이고 : 나는이 문제를 확인했다.디버거의 (a CryptoStream.ReadByte() 호출에) 아무 설명과 함께 응용 프로그램
내 목적은 우리가 암호화하거나 파일을 해독하고 있었다 여부, 쓰기 모드에서 파일 스트림을 초기화 된 생성자. 쓰기 파일 스트림이 해독되기 전에 닫히지 만 (그 목적으로 사용되는 다른 파일 스트림) 여전히 조용한 충돌을 일으켰습니다. 이제 제대로 작동합니다.
그래서 보통 파일 액세스 문제처럼 보입니다. CryptoStream
이 예외로 처리하지 않는 불만입니다. 제안에 대한
감사합니다 - 나는 ProcDump 및 WinDbg는 살펴해야합니다.
난 그냥 로컬 하드 디스크에서 파일을 읽고 해독 할 수있는 작은 응용 프로그램을 만들었습니다.
Visual Studio 디버거는 메시지 나 설명없이 응용 프로그램을 종료합니다. 다음 코드에서 행 read = crypto.ReadByte()
이 실행될 때 발생합니다.
어떤 예외가 발생하지 않습니다 : 나는 시도하고 배제 무엇
try { if (file != null) { // the stream that was used for encryption file.Close(); } var provider = new DESCryptoServiceProvider(); provider.Key = Key; provider.IV = Key; var ict = provider.CreateDecryptor(); var bytes = new List<byte>(); using (var stream = new FileStream(fileName, FileMode.Open)) { crypto = new CryptoStream(stream, ict, CryptoStreamMode.Read); var decrypted = new MemoryStream(); Int32 read; try { do { read = crypto.ReadByte(); // the application dies here if (read != -1) bytes.Add(Convert.ToByte(read)); } while (read != -1); } finally { // we never get here decrypted.Close(); } }; return ASCIIEncoding.ASCII.GetString(bytes.ToArray()); } catch (Exception x) { // we never get here either crypto.Close(); return x.Message; }
.
finally
또는catch
을 입력하지 마십시오. 나는 또한Break when an exception is thrown
을 활성화했지만 아무런 차이가 없습니다. 예외 표시가 없습니다.애플리케이션 (ClickOnce를)를 게시 및 실행 동일한 효과를 갖는다.
다시 시작하면 아무런 차이가 없습니다.
(다른 프로세스가 액세스 등을 차단하는 경우 경우) 파일의 복사본을 제작하고 그 사본을 읽으려고이 같은 방식으로 실패합니다. 내가 조사 식 창에
crypto.ReadByte()
을 평가하려고하면, 그 순서에 따라 다음 메시지를 받고 있어요 :
This expression causes side effects and will not be evaluated
;나는 그것을 새로 고칠 때 : 나도 그것을 새로 고치거나 몇 초 기다려야 할 때
Function evaluation was aborted
:
Unable to evaluate the expression. The object invoked has disconnected from its clients.
앱이 종료됩니다, 우리가에있어 비주얼 스튜디오.
무엇이 문제입니까?
방법 ->은 System.StackOverflowException은 "슬로우"체크 'Key'가 초기화 되었습니까? 어떤면에서는 잘못된 것 같습니다. –
@Jeremy'Key'는 하드 코드되어 있습니다. 이것은 Pi의 8 자리 첫 자릿수의 바이트 배열입니다. –
이 키를 사용하여 인코딩/디코딩이 제대로 작동합니까? 애드혹 (ad-hoc) 단위 테스트를 해보십시오. 적어도 원인을 제거 할 것입니다. –