2013-04-09 2 views
5

나는 C# 코드를 작성하고 터미널에 결과를 인쇄하여 작동하는지 확인했습니다. 현재 MVC 4 컨트롤러로 일부 코드를 전송하는 중입니다. 그리고 대부분을 연속적으로 병합 할 수 있었지만 한 부분에 문제가 있습니다.ASP.NET MVC FileStream Crossover에 대한 C# #

데이터베이스 파일 (database.dat)을 읽고 나중에 동일한 파일에 쓰고 싶습니다. 밑줄 File.OpenRead 및 File.Open의 두 경우 모두 '파일'에서

using (FileStream stream = File.OpenRead("database.dat")) database = (List)formatter.Deserialize(stream);

using (Stream stream = File.Open("database.dat", FileMode.Create)) formatter.Serialize(stream, database);

을 나는 오류가 나타납니다 : 내 컨트롤러에서

내가 가진

'System.Web.Mvc.Controller.File(byte[], string)' is a 'method', which is not valid in the given context ..."

MVC에서 동일한 결과를 얻을 수있는 방법이 있습니까?

답변

9

(http://msdn.microsoft.com/en-us/library/system.io.file.aspx)에 File 클래스를 사용하려면 정규화 된 이름을 추가해야합니다. 따라서이 같은 작업을해야합니다 :

using (FileStream stream = System.IO.File.OpenRead("database.dat")){ 
    database = (List)formatter.Deserialize(stream); 
} 
+1

@BASmith는 명확히 : 당신이 System.Web.Mvc.Controller.File에 대한 오류가 왜 MVC의 컨트롤러에서 파일 방법이 있습니다, 당신은을 제공해야하므로 System.IO.File의 전체 이름을 사용하여 일반 File 정적 클래스를 가져옵니다. –

+0

그 점을 지적 해 주셔서 감사합니다. 사소한 일로 보았을 지 모르겠지만 때로는 단순히 대답하기가 어려울 수도 있습니다. 불행히도 그 문제를 해결하면서 "Deserialize (stream)"을 좋아하지 않고 "SerializationException이 사용자 코드에 의해 처리되지 않았습니다"라고 말합니다. – benallansmith

+1

그 이전의 코멘트가 없으므로, 이전 빌드에서 내 database.dat 피드를 강제로 시도하고 버전이 일치하지 않습니다. 그것을 다시 컴파일하여 자신의 database.dat로 수정해야합니다. – benallansmith