11.07.2006, 19:44 | #1 |
Гость
|
Callout
В чем проблема не пойму, наверняка какую-нибуть мелочь забыл, помогите пожалуйста разобраться.
Пытаюсь создать простое, тестовое callout, чтобы понять как оно работает. Мои действия: 1) В студии создаю .dll вот код(соответственно сделав все ссылки): using System; using System.Collections; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Xml; using System.IO; using System.Security.Principal; using Microsoft.Win32; using Microsoft.Crm.Callout; using work.CrmSdk; namespace work { classCalloutComponent : CrmCalloutBase { publicoverridevoid PostCreate(CalloutUserContext userContext, CalloutEntityContext entityContext, string postImageEntityXml) { TextWriter log = TextWriter.Synchronized( File.AppendText(@"C:\CRM_SDK_Drop\Create.txt")); log.WriteLine("PostCreate"); log.WriteLine("ObjectType: " + entityContext.EntityTypeCode.ToString()); log.WriteLine("ObjectId: " + entityContext.InstanceId.ToString()); log.WriteLine("CreatorId: " + userContext.UserId.ToString()); log.WriteLine(); log.Close(); } } } Компилится отлично. 2) Беру dll и забрасываю её в <installdir>\Program Files\Microsoft CRM\server\bin\assembly\ 3) Подправляю callout.config.xml : <callout.config version="1.0" xmlns=" http://schemas.microsoft.com/crm/2006/callout/"> <callout entity="account" event="PostCreate"> <subscription assembly="work.dll" class="work.CalloutComponent" onerror="abort"> <postvalue>@all</postvalue> </subscription> </callout> </callout.config> 4) Перезагружаю IIS с помощью команды iisreset 5) Захожу в CRM, создаю account, но не вижу результата. Зато в событиях появилась ошибка: Error: ISV code threw exception: assembly: work.dll; class: work.CalloutComponent; entity: account, event: postcreate, exception: System.BadImageFormatException: Недопустимый формат файла 'work.dll'. Имя файла: "work.dll" at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark) at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo) at Microsoft.Crm.Callout.CalloutHost.PostCreate(CalloutUserContext userContext, CalloutEntityContext entityContext) === Pre-bind state information === LOG: Where-ref bind. Location = D:\Program Files\Microsoft CRM\server\bin\assembly\work.dll LOG: Appbase = d:\windows\system32\inetsrv\ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///D:/Program Files/Microsoft CRM/server/bin/assembly/work.dll. Как я понял проблемма в dll. Но она взята из SDK. От сюда и вопрос - почему она ругается? |
|
12.07.2006, 07:58 | #2 |
Участник
|
По моему там еще после перезагрузки IIS надо еще рестартить MS WF.
Какая VS используется? Попробуйте VS 2003. |
|
12.07.2006, 08:58 | #3 |
Гость
|
Студия 2005, рестиртил и wf, все равно такая беда...
|
|
12.07.2006, 09:33 | #4 |
Moderator
|
Надо использовать VS 2003. С 2005 возможны проблемы именно с Callout-ами.
|
|
12.07.2006, 10:52 | #5 |
Участник
|
Если проблема не разрешилась, то проверьте прописали ли Вы strong name key в файле AssemblyInfo проекта.
|
|
12.07.2006, 13:16 | #6 |
Гость
|
Прошу прощения за некомпетентность, но что есть strong name key. Я посмотрел в свойствах assemnblyinfo.cs но ни чего похожего не нашел.
А в 2005 студии с wf тоже проблеммы могут быть? |
|
12.07.2006, 14:17 | #7 |
Участник
|
Цитата:
Сообщение от faust911
Прошу прощения за некомпетентность, но что есть strong name key. Я посмотрел в свойствах assemnblyinfo.cs но ни чего похожего не нашел.
[assembly: AssemblyKeyFile("C:\\key.snk")] где C:\key.snk - strong name key, который создаётся утилитой Visual Studio .Net Command Promt. Данный файл содержит GUID уникально идентифицирующий Вашу сборку на CRM Сервере. ЗЫ: по крайне мере для использования сборок в worflow без определения strong name key возвращается ошибка. Цитата:
Сообщение от faust911
А в 2005 студии с wf тоже проблеммы могут быть?
|
|
14.07.2006, 20:18 | #8 |
Гость
|
Спасибо за разъяснения.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Не работает Callout после апгрейда до CRM 4.0 | 1 | |||
Как запустить CallOut | 0 | |||
CallOut в CampaignItem | 0 | |||
General Callout code exception | 3 | |||
Использование Callout | 1 |
|