2010-07-22 4 views
2

.NET 용 클래스를 인스턴스화하는 기존 ASP 응용 프로그램이 있습니다. 이 클래스에서 세션에 객체를 저장하기 위해 직렬화를 수행합니다..NET에서 XMLSerializer를 작성하면 예외가 발생합니다.

테스트 클래스에서 다음 코드 줄을 호출하면 올바르게 작동합니다. 내가이 권한을 내가주는 시도 그래서 관련이 어쩌면 생각

{"Cannot execute a program. The command being executed was \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\csc.exe\" /noconfig /fullpaths @\"C:\\WINDOWS\\TEMP\\rwot-yx9.cmdline\"."} System.SystemException {System.Runtime.InteropServices.ExternalException} 

'모든 사람'을 완벽하게 제어 :

var cereal = new XmlSerializer(couponApplicator.GetType()); 

는 그러나, 웹 사이트에 호출되는 내가 디버깅하고 때, 다음과 같은 오류가 발생합니다 windows/microsoft.net 폴더뿐만 아니라 windows/temp 폴더에도 있습니다. 참고로, 저는 이것을 Windows XP 시스템에서 실행하고 있습니다. 어떤 아이디어?

답변

2

알아 냈어.

IIS 잠금 도구는 windir 디렉터리의 모든 * .exe 실행 파일에 대한 거부 권한을 설정했습니다. 그래서 저는이 cvtres.exe

가에는 Csc.exe

그럼, 내가 준

창문/microsoft.net/프레임 워크/2.0/폴더에 두 파일에 대한 액세스 권한을 거부 제거해야 IUSR 및 IWAM 계정은 Windows temp 디렉토리뿐만 아니라 두 파일에 대한 사용 권한을 읽고 실행합니다.

다음은 자세한 내용을 설명하는 훌륭한 게시물입니다. http://www.evilrob.org/journal/archives/2005/05/16/iusriwam-accoun.html

+0

당신이 알아 낸 것을 기쁘게 생각합니다. –

0

Windows 응용 프로그램에서 작업 할 때 응용 프로그램 설정 등을 유지하기 위해 XML 직렬화를 사용하는 경우 직렬화 어셈블리에 문제가 있음을 발견했습니다. 내가 찾은 바에 따르면 런타임시 런타임에 작성하는 대신 sgen을 사용하여 Serializer 유형을 미리 작성하여 LUA 환경에서 훨씬 더 성공적으로 전개했다는 것을 알게되었습니다.

런타임에 동적으로 생성 할 필요가 없다면 살펴볼 가치가 있습니다. 그것은 꽤 직선적 인 포워드입니다. 직렬화하려는 형식이 포함 된 어셈블리에서 sgen을 호출하는 .NET 프로젝트에서 게시 빌드 이벤트를 만들고 (이 경우 [Serializable()]으로 표시되어 있는지 확인하십시오.) 배포 할 때 생성 된 * .XmlSerializers 어셈블리 만 포함하면 은 XmlSerializer를 사용할 때이 특별한 사용 권한에 대해 걱정하지 않아야합니다.

관련 문제