2012-01-16 2 views

답변

1

는 웹 역할은 E에 Sitesroot 폴더가됩니다 드라이브, 해당 폴더가 있는지 확인하기 위해 몇 줄의 코드를 작성할 수 있습니다. 나는 API를 통해 생각할 수 없다.

public static bool IsWebRole() 
{ 
    return (System.IO.Directory.Exists(@"E:\sitesroot") || System.IO.Directory.Exists(@"F:\sitesroot")); 
} 
1

나는 당신이 GetHostedService에서 RoleName인스턴스 이름에서/감각을 구문 분석 할 수있는 것 같아요. 임베디드 상세 = 으로 설정하여 서비스 배포에 대한 세부 사항을 확인하십시오.

추가 정보 : 난 아직 역할 이름에 의존하는 것보다 더 나은 더 신뢰할 수있는 솔루션을 찾을 수 없습니다 SDK 2.2을 사용하여 http://msdn.microsoft.com/en-us/library/windowsazure/ee460806.aspx

+2

대회에 따라 이름을 기재하는 것이 기꺼이 좋은 답변입니다. –

0

.

public static bool IsWebRole() 
{ 
    var roleName = RoleEnvironment.CurrentRoleInstance.Role.Name; 
    var match = Regex.Match(roleName, ".*webrole.*?", RegexOptions.IgnoreCase); 
    if (match.Success) return true; 
    match = Regex.Match(roleName, ".*workerrole.*?", RegexOptions.IgnoreCase); 
    if (match.Success) return false; 
    throw new Exception(String.Format("Can't figure out role type of {0}", roleName)); 
} 
0

배포 된 내용입니다. "WaWorkerHost" 프로세스가 존재하는 경우 작업자 역할입니다. 그렇지 않으면 웹 역할입니다. "WaIISHost"을 대신 확인할 수도 있습니다.

bool isWorkerRole = false; 
    foreach (Process proc in Process.GetProcessesByName("WaWorkerHost")) 
    { 
     isWorkerRole = true; 
    }   
관련 문제