2011-08-28 4 views
1

에 대한 응답으로 작업을 생성하는 플러그인을 만들려고하는데 사용자 정의 엔티티에 대한 메시지을 만듭니다.CRM 2011 Online Plugin Operation - OrganizationServiceProxy를 만드는 방법은 무엇입니까?

CrmSvcUtil.exe를 사용하여 사용자 지정 OrganisationServiceContext를 생성했습니다. SDK serverConnect.GetServerConfiguration()을 사용하여 OrganizationServiceProxy를 만들었지 만이 작업을 성공적으로 사용하는 콘솔 응용 프로그램 테스트 호스트가 있습니다.

System.Security.SecurityException :

내가 온라인 인스턴스에 플러그인 어셈블리 (샌드 박스)를 배포

은 아래 코드와 불면 유형 'System.Security.Permissions의 허가 요청 .SecurityPermission, mscorlib에, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089 ' 누군가가 날 지점 수
// Obtain the execution context from the service provider. 
var executionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 

// Obtain the organization service reference. 
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = serviceFactory.CreateOrganizationService(executionContext.UserId); 

//Extract the tracing service for use in debugging sandboxed plug-ins. 
ITracingService tracingService = 
       (ITracingService)serviceProvider.GetService(typeof(ITracingService)); 

tracingService.Trace("Buiding"); 

var organizationUri = new Uri("{theuri}/XRMServices/2011/Organization.svc");   
var credentials = new ClientCredentials(); 
credentials.Windows.ClientCredential = NetworkCredential)CredentialCache.DefaultCredentials; 

var organizationServiceProxy = new OrganizationServiceProxy(organizationUri, null, credentials, null); 
organizationServiceProxy.EnableProxyTypes(); 

var context = new CustomContext(organizationServiceProxy); 

실패 올바른 방향?

감사

귀하의 CustomContext

답변

3

유형 Microsoft.Xrm.Sdk.IOrganizationService의 매개 변수를 받아 들여야한다. 이 (A crmsvcutil 생성 된 파일의 발췌)

/// <summary> 
/// Constructor. 
/// </summary> 
public CrmContext(Microsoft.Xrm.Sdk.IOrganizationService service) : base(service) 
{ 
} 

처럼 당신 수 (그리고해야한다) 단순히 플러그인 컨텍스트 사용중인 {theuri}의 값에 따라

var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
var service = serviceFactory.CreateOrganizationService(context.UserId); 

using (var crmContext = new CrmContext(service)) 
{ 
... 
} 

의 도움으로 연결을 생성, 귀하의 요청이 모래 상자에 의해 차단 된 것으로 가정하고 그 모래 상자의 내용은 constraints입니다.

+0

감사합니다.이 사진이 좋게 보입니다. 오늘 밤 변경 사항을 작성한 다음 답변으로 표시하려고 시도합니다. Uri를 다시 생각해 보면 https : // {customer} .crm5.dynamics.com 형식이며, 이는 확실히 DNS에서 해결할 수 있으며 요청 자체는 익명입니다 ... – 6footunder

관련 문제