2013-06-07 1 views
4

웹 역할이 Azure에 배포되었고 시작 프로세스의 일부로 주기적으로 실행하여 일부 백그라운드 작업을 수행하도록 예약합니다. 비트 like this 또는 this). 이것은 매우 잘 작동하고 내 배경 작업에 필요한 상대적인 잔인한 작업자 역할이 필요 없다는 것을 의미합니다.RoleEnvironment.IsAvailable == 사용자가 관리자가 아닌 경우 Azure 내에서 exe를 실행하면 false

로컬 관리자 그룹의 사용자로 예약 된 작업을 실행하고 있지만이를 약간 늘려야하지만 로컬 관리자 그룹에서 사용자를 제거하고 .exe를 실행하면 RoleEnvironment.IsAvailable이 false를 반환합니다. 이럴만한 이유가 있습니까? RoleEnvironment.IsAvailable에 대해 올바른 값을 얻으려면 어떤 권한이 필요합니까?

Someone had a similar problem here Windows 서비스를 관리자가 아닌 해상도로 실행할 때.

가 UPDATE

(또한 MSDN forum에 질문) : 나는 최근에 RoleEnvironment 클래스 문서

RoleEnvironment 클래스는 푸른 외부의 푸른 VM에 독립형 구성 요소에 사용할 수 있다고 것으로 나타났습니다 역할. [...] 이러한 프로세스는 역할을 위임 된 승격 된 권한으로 실행해야합니다.

이는 아마도 예약 된 작업을 사용하여 관리자 로그인을 사용해야하는 이유 일 수 있습니다.

+0

Azure에서 버그 일 수 있습니다. 다른 로컬 그룹을 사용하려고 시도 할 가치가 있습니다. 아마도 "충분히 빡빡한"것을 찾아 여전히 작동 할 것입니다. – sharptooth

+0

그리고 EXE는 .NET 콘솔 응용 프로그램입니다. 맞습니까? – astaykov

+0

예, .net 콘솔 앱입니다. – Rory

답변

0

실은 실망 스럽습니다. 실행중인 사용자가 속한 보안 그룹 일뿐입니다. RDP를 사용하여이 작업을 시스템에 테스트하거나 시작 작업을 기다리는 중입니까? RDP를 실행하고 거기에서 뭔가를 실행하면 연결된 사용자의 컨텍스트에서 실행되므로 RDP를 사용할 때 내 컨텍스트에서 사용할 수있는 RoleEnvironment 변수를 본 적이 없습니다.

그러나 제안을드립니다. 별도의 작업자 역할이 과도 할 수도 있지만 동일한 WebRole에 RoleEntryPoint를 구현하는 것은 어떻습니까? 그것은 완전히 유효하고 지원되는 시나리오입니다. 그리고 나는 그렇게 많은 고객을 보았습니다. RoleEntryPoint를 상속받은 WebRole 내부에 public 클래스를 만들고 원하는 메서드를 재정의 (OnStart, OnStop, Run 또는 그보다 적게)하면 완료됩니다. 유일한주의 사항은 구성 파일을 원한다면 web.config가 도움이되지 않는다는 것입니다. 그러나 RoleEntryPoint에서 실행되는 코드와 관련된 모든 구성을 넣을 수있는 WaaIISHost.config 파일을 추가해야합니다.

필요한 모든 컨텍스트, 필요한 모든 구성, 필요한 모든 기능을 갖추고 동일한 웹 역할에서 작동합니다. 더 나은 진단, 문제 해결 및 디버깅 옵션을 사용하면 예약 된 작업을 수행 할 수 있습니다.

+0

보안 그룹과 관련이 있다는 것을 확신합니다. RDP-ed를 실행하고 예약 된 작업을 변경 한 다음 기다렸다가 startup.cmd를 변경하여 사용자를 Administrators에 추가할지 여부를 결정한 다음 다시 배포하여 테스트했습니다. – Rory

+0

시스템에 RDP를 걸어서 (관리자로 로그인 한) .exe를 실행하면'RoleEnvironment.IsAvailable'에 대한 올바른 값을 얻을 수 있으며 azure를 사용하여 cscfg 설정에 액세스 할 수 있습니다. 나는 그걸로 문제가 없었어요. – Rory

+0

RE'RoleEntryPoint' 예정된 작업이이 이슈 이외에 잘 작동하고 있기 때문에 내가 바라는 것보다 더 중요한 변경이 될지라도, 그 아이디어를 살펴 보겠습니다. – Rory

관련 문제