09.08.2012, 14:05 | #1 |
Участник
|
CRM 4.0 Ошибка выполнения плагина
При попытке выполнения плагина возникает ошибка "Не удалось загрузить тип подключаемого модуля.", и плагин не выполняется. Подскажите, пожалуйста, каким образом можно отследить, в чем ошибка?
|
|
09.08.2012, 14:23 | #2 |
Участник
|
1. Запустите Trace
2. Запустите Debug плагина. 3. Внутри себя плагин не использует никаких сторонних библиотек? только те что есть в SDK? |
|
09.08.2012, 14:31 | #3 |
Участник
|
Я пыталась отследить ошибку в отладчике. Плагин даже не начинает выполняться.
3. X++: using System; using System.Collections.Generic; using System.Text; using Microsoft.Crm.Sdk; using Microsoft.Crm.SdkTypeProxy; |
|
09.08.2012, 15:14 | #4 |
Чайный пьяница
|
А вы сборку подписали (правой мыши на проекте в студии - Properties - Signing)?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.08.2012, 15:15 | #5 |
Участник
|
1. Что в Trace CRM?
2. Как самое простое прямо в начале ф-ии Execute напишите return. Если ошибки не будет, значит ошибка при выполнении плагина иначе ошибка установки. |
|
09.08.2012, 15:16 | #6 |
Участник
|
А разве можно неподписанную сборку установить?
|
|
09.08.2012, 15:16 | #7 |
Участник
|
Да, подписала.
|
|
09.08.2012, 15:16 | #8 |
Чайный пьяница
|
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.08.2012, 15:21 | #9 |
Чайный пьяница
|
Для того, чтобы понимать что у вас в референсах using-ов маловато. Можете сделать скриншот подобный следующему:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.08.2012, 15:28 | #10 |
Участник
|
|
|
09.08.2012, 15:32 | #11 |
Участник
|
Цитата:
2. Сделала так. Ошибка возникает, значит, это ошибка установки? |
|
09.08.2012, 15:36 | #12 |
Участник
|
В реестре
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSCRM создать параметр с именем TraceEnabled типом Dword и значением 1 Если параметр есть поставить значение 1 Рестартануть ИИС В папке C:\Program Files\Microsoft Dynamics CRM\Trace появится файл, куда будет логироваться система. Выполните код. Получите ошибку и посмотрите что в файле этом будет. |
|
09.08.2012, 15:49 | #13 |
Чайный пьяница
|
Код плагина дайте ещё на всякий случай, пожалуйста. Точнее больше интересует конструктор.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.08.2012, 15:52 | #14 |
Участник
|
Цитата:
X++: public void Execute(IPluginExecutionContext context) { if (!(context.InputParameters.Contains("Target")) || !(context.InputParameters["Target"] is DynamicEntity)) return; DynamicEntity _opportunity = (DynamicEntity)context.InputParameters["Target"]; if (_opportunity.Name != EntityName.opportunity.ToString()) return; if (!_opportunity.Properties.Contains("new_status")) return; Picklist status = (Picklist)_opportunity["new_status"]; if (status.Value.ToString() != "5") return; ICrmService crmService = context.CreateCrmService(true); DynamicEntity new_stop = new DynamicEntity("new_stop"); Customer oppid = (Customer) _opportunity["opportunityid"]; Lookup oppLookup = new Lookup(); oppLookup.Value = oppid.Value; oppLookup.type = EntityName.opportunity.ToString(); new_stop.Properties.Add(new LookupProperty("new_contractid", oppLookup)); Guid stopGuid = crmService.Create(new_stop); } |
|
09.08.2012, 15:58 | #15 |
Чайный пьяница
|
Это не конструктор, это реализация интерфейса IPlugin. У вас конструктор у класса есть?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.08.2012, 10:32 | #16 |
Участник
|
Нет, конструктора класса нет.
|
|
10.08.2012, 11:10 | #17 |
Участник
|
А трейс?
|
|
10.08.2012, 11:14 | #18 |
Участник
|
Трейс пишет вот что.
X++: [2012-08-09 15:55:11.6] Process: w3wp |Organization:f9ea71b9-caaf-e111-91fc-00155da01115 |Thread: 8 |Category: Platform.Sdk |User: a3ee1258-cfaf-e111-91fc-00155da01115 |Level: Error | PluginStep.Execute at PluginStep.Execute(PipelineExecutionContext context) at Pipeline.Execute(PipelineExecutionContext context) at MessageProcessor.Execute(PipelineExecutionContext context) at InternalMessageDispatcher.Execute(PipelineExecutionContext context) at ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at InProcessCrmService.Execute(Object request) at PlatformCommand.ExecuteInternal() at UpdateCommand.Execute() at EntityProxy.Update(Boolean performDuplicateCheck) at EntityProxy.UpdateAndRetrieve(String columnSet, Boolean performDuplicateCheck) at AppForm.RaiseDataEvent(FormEventId eventId) at EndUserForm.Initialize(Entity entity) at CustomizableForm.Execute(Entity entity, String formType) at OpportunityDetailPage.ConfigureForm() at AppUIPage.OnPreRender(EventArgs e) at Control.PreRenderRecursiveInternal() at Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at Page.ProcessRequest() at Page.ProcessRequest(HttpContext context) at alibra_sfa_opps_edit_aspx.ProcessRequest(HttpContext context) at CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at ApplicationStepManager.ResumeSteps(Exception error) at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) at HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr) at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType) >Web Service Plug-in failed in SdkMessageProcessingStepId: {E0F8EB2A-01D9-DE11-910D-0026181D2843}; EntityName: opportunity; Stage: 50; MessageName: Update; AssemblyName: Softline.Runov.Apps.Plugins.PostUpdateOpportunity, Softline.Runov.Apps.Plugins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ef963d4fac9af6a; ClassName: Softline.Runov.Apps.Plugins.PostUpdateOpportunity; Exception: Unhandled Exception: System.Security.SecurityException: , . : Security. System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly) System.Diagnostics.EventLog.SourceExists(String source, String machineName) System.Diagnostics.EventLog.VerifyAndCreateSource(String sourceName, String currentMachineName) System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) Softline.MsCrm40.Sdk.EventLogWriter.WriteError(String error) Softline.MsCrm40.Sdk.EventLogWriter.WriteError(Exception ex) Softline.MsCrm40.Sdk.Logger.WriteError(Exception ex) Softline.Runov.Apps.Plugins.PostUpdateOpportunity.Execute(IPluginExecutionContext context) Microsoft.Crm.Extensibility.PluginStep.Execute(PipelineExecutionContext context) . [2012-08-09 15:55:11.6] Process: w3wp |Organization:f9ea71b9-caaf-e111-91fc-00155da01115 |Thread: 8 |Category: Application |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ErrorInformation.LogError at ErrorInformation.LogError() at AppForm.HandleSaveEntityException(Exception exception, FormEventId eventType, String url) at AppForm.RaiseDataEvent(FormEventId eventId) at EndUserForm.Initialize(Entity entity) at CustomizableForm.Execute(Entity entity, String formType) at OpportunityDetailPage.ConfigureForm() at AppUIPage.OnPreRender(EventArgs e) at Control.PreRenderRecursiveInternal() at Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at Page.ProcessRequest() at Page.ProcessRequest(HttpContext context) at alibra_sfa_opps_edit_aspx.ProcessRequest(HttpContext context) at CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) at ApplicationStepManager.ResumeSteps(Exception error) at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) at HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr) at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType) >MSCRM Error Report: -------------------------------------------------------------------------------------------------------- Error: , . : Security. Error Number: 0x80040265 Error Message: , . : Security. Error Details: , . : Security. Source File: Not available Line Number: Not available Request URL: http://srv-dcrm-01/alibra/sfa/opps/edit.aspx?id={59BD0852-5ECC-DF11-88B4-0026181D2843} Stack Trace Info: [SecurityException: , . : Security.] System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly) System.Diagnostics.EventLog.SourceExists(String source, String machineName) System.Diagnostics.EventLog.VerifyAndCreateSource(String sourceName, String currentMachineName) System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) Softline.MsCrm40.Sdk.EventLogWriter.WriteError(String error) Softline.MsCrm40.Sdk.EventLogWriter.WriteError(Exception ex) Softline.MsCrm40.Sdk.Logger.WriteError(Exception ex) Softline.Runov.Apps.Plugins.PostUpdateOpportunity.Execute(IPluginExecutionContext context) Microsoft.Crm.Extensibility.PluginStep.Execute(PipelineExecutionContext context) [InvalidPluginExecutionException: , . : Security.] Microsoft.Crm.Extensibility.PluginStep.Execute(PipelineExecutionContext context) Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context) Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context) Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context) Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) Microsoft.Crm.Sdk.InProcessCrmService.Execute(Object request) Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.ExecuteInternal() Microsoft.Crm.Application.Platform.ServiceCommands.UpdateCommand.Execute() Microsoft.Crm.Application.Platform.EntityProxy.Update(Boolean performDuplicateCheck) Microsoft.Crm.Application.Platform.EntityProxy.UpdateAndRetrieve(String columnSet, Boolean performDuplicateCheck) Microsoft.Crm.Application.Forms.AppForm.RaiseDataEvent(FormEventId eventId) |
|
10.08.2012, 11:59 | #19 |
Чайный пьяница
|
Итак. Что сказал лог.
Падает вот в таком классе Softline.Runov.Apps.Plugins.PostUpdateOpportunity. Судя по всему это не ваше. Смотрите зарегистрирован ли этот плагин. Что я насмотрел у вас в коде: Код: Customer oppid = (Customer) _opportunity["opportunityid"]; Код: Key oppid = (Key)_opportunity["opportunityid"];
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|