2009-11-11 7 views
5

분산 네트워크로 밀어 넣으려고하는 C# 응용 프로그램이 있습니다. 응용 프로그램은 로컬에서 항상 정상적으로 작동하지만 네트워크에 푸시 할 때 C : \ Windows \ Temp 디렉터리에 쓸 수 없기 때문에 작동하지 않습니다. 그 디렉토리에 글을 쓰는 코드를 실제로 호출하지는 않지만, 다음 예외가 주어지면 웹 서비스에 대한 호출로 인한 것이라고 상상한다..NET에서 C : Windows Temp에 쓰기 금지 방지

임시 클래스 (결과 = 1)를 생성 할 수 없다. 오류 CS2001 : 소스 파일 'C : \ WINDOWS \ TEMP \ cyalinh1.0.cs'에 오류가 발생했습니다. CS2008 : 입력이 없습니다 '. 자세한 내용은 InnerException 을 참조하십시오.

.NET에서 Temp 디렉토리에 쓰는 것을 방지 할 수있는 방법이 있습니까? .config 파일의 설정입니까?

UPDATE

이 SGEN는 웹 서비스에서 그 동적으로 생성 된 클래스의 생성을 방지하기 위해 사용할 수 있습니까?

+0

실행중인 작업이 어셈블리를 실행하면 실제로 다른 라운드를 수행해야한다는 사실 외에 다른 대답은 없습니다. Just In Time 컴파일을 통해 일리노이 코드를 기계어 코드로 가져옵니다. –

+0

웹 서비스를 통해 호출되는 DLL을 SGENing하여 이러한 동적 클래스 컴파일을 방지 할 수 있습니까? – Josh

답변

4

웹 서비스에는 % SystemRoot % \ Temp (MSDN)에 대한 읽기/쓰기 권한이 필요합니다. here에서

:

aspnet_regiis -GA MachineName\Account 

blog post이 지침이 포함되어 있습니다 : 당신이 ASP.NET 2.0 이상 를 실행하는 경우

, 당신은 명령으로 필요한 권한을 할당 할 수 있습니다 이 작업에 사용 된 SystemRoot \ Temp 폴더의 위치를 ​​변경하는 방법 및 웹에서 설정을 결정하는 데 반사기를 사용하는 방법에 대한 지침을 제공합니다.config와 같은 상황에 맞게 설정)

+0

임시 디렉터리 경로를 설정하는 설정 또는 환경 변수 (a la'TMPDIR')가 있습니까? –

+0

임시 폴더를 변경하는 방법에 대한 지침을 보려면 링크를 추가 할 수정 된 게시물. –

1

여기에있는 문제는 임시 코드를 자동 생성하는 일부 기능을 사용하고 있다는 것입니다. 이 작업을 수행 할 위치가 필요합니다. 그래서 예, 특정 위치에 코드를 작성하는 것을 막을 수는 있지만 코드를 생성하지 못하게하는 유일한 방법은 임시 클래스를 생성하는 함수를 사용하지 않는 것입니다.

0

조쉬 읽기이 코드 (NT 계정 관련 IIS?) 적절한 권한 집합이 있어야 실행 과정,

내 생각 엔 당신이 만들고있는 전화가 걷어하려고하고있는 것 대상 PC의 디버깅 세션을 끕니다. 예외가 발생한 후 소스 파일을 가져 오려고합니다.

웹 서비스 호출의 근본 원인은 예외 일 수 있습니다.

는 임시 폴더에 쓰기를 완화하려면 대상 시스템에 적시 (just-in-time) 디버깅을 비활성화 할 수 있습니다 응용 프로그램 설정에서 <system.windows.forms jitDebugging="false"/> 같은 뭔가

내가 뒷조사를했다. 문제는 클라이언트 컴퓨터가 아니라 서버에있는 것처럼 보입니다. 웹 서비스를 호스팅하는 사용자의 임시 폴더에 읽기/쓰기 권한을 추가하면 OK 일 수 있습니다. 위의 미친 조언에 대한 미안 ...

0

많은 포럼을 검색하고 최종적으로 수정했습니다.이 기능은 나를 위해 작동합니다. 여기 있습니다!

  1. 마우스 오른쪽 버튼으로 클릭에 c : 임시 폴더 \ \ 창

    보안 탭에서
  2. , 사용자 목록에 iisuser 계정을 추가 한 줄 읽기/쓰기/실행 권한 (또는) 모든 권한

  3. 웹 사이트를

그게 전부 다시 시작 !!! ... 배포 된 웹 서비스를 소비하면 응용 프로그램을 확인

이 작업을 수행해야합니다 ..

관련 문제