AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2008, 16:54   #1  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
? Передача параметров CRM -> Sharepoint
Прошу Вашей помощи не знаю за что взяться, задача такова:
в сущности есть дополнительный раздел Документы, при нажатии на него в идеале в окне сущности появляется библиотека Sharepoint с выборкой по определенному столбцу.

Соответственно вносим изменения в ISV.конфиг, там через редирект с запросом пытаемся вызвать нужное окно, вот код:

Код:
<%@PageLanguage="C#"Debug="true" %>
<%@IMPORTNamespace="CrmSdk" %>
<scriptrunat="server">
protectedvoid Page_Load(object sender, EventArgs e)
{
string entityid = Request.QueryString["old"];
CrmService service = newCrmService();
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
service.Url = "http://crm/mscrmservices/2006/crmservice.asmx";
ColumnSet cols = newColumnSet();
cols.Attributes = newstring[] { "project" };
 
try
{
account oAccount = (account)service.Retrieve(EntityName.account.ToString(), newGuid("EB974233-B9AF-DD11-9153-00155D00C913"), cols);
string acctNumber = (oAccount.name == null) ? string.Empty : oAccount.name.ToString();
string url = "http://portal.elfnet.local/Units/IT/CRMDocs/Forms/AllItems.aspx?View={370E6746-5F6F-4C8D-9BAC-B5C59C33EA07}&FilterField1=project&FilterValue1=";
url += acctNumber;
Response.Redirect(url, true);
}
catch (System.Web.Services.Protocols.SoapException ex)
{
//Handle error
}
}
 
</script>
, где CrmSdk - подключенный через WebReference CRM-сервис

соответственно при попытке открыть выводит разные ошибки, в зависимости от расположение файла скрипта. В частности либо 401, либо что пространство имен CrmSdk не обнаружено. У меня смутное ощущение что я делаю что то не так, но не могу понять что.
CRM у нас 4.0

Последний раз редактировалось Казарин Александр; 18.11.2008 в 17:30.
Старый 18.11.2008, 18:34   #2  
Олег Михайлов is offline
Олег Михайлов
Участник
Аватар для Олег Михайлов
 
18 / 11 (1) +
Регистрация: 24.04.2008
К CRM не пускает?
Если к CRM, то, первое, что бросается в глаза -
service.Url = "http://crm/mscrmservices/2006/crmservice.asmx";
а должно быть, по идее, 2007
Второе - в этом коде организация не указана. (см. CrmAuthenticationToken)
Попробуйте как в SDK инициализировать сервис - там есть пример.
Старый 18.11.2008, 18:58   #3  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Я все переделал сделал по другому:

Код:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CrmDiscoveryService;
using CrmSdk;
publicpartialclassLoad : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
CrmSdk.CrmService crmService = GetCrmService("ExpertSever");
QueryByAttribute query = newQueryByAttribute();
ColumnSet cols = newColumnSet();
cols.Attributes = newstring[] { "name" };
query.ColumnSet = cols;
query.EntityName = EntityName.account.ToString();
query.Attributes = newstring[] { "id" };
 
 

query.Values = newobject[] { "EB974233-B9AF-DD11-9153-00155D00C913" };
BusinessEntityCollection retrievedProjects = crmService.RetrieveMultiple(query);
dlProjects.Items.Add(newListItem("Выберите партнера", null));
 
for (int i = 0; i < retrievedProjects.BusinessEntities.Length; i++)
{
dlProjects.Items.Add(newListItem(((account)retrievedProjects.BusinessEntities[i]).name, ((account)retrievedProjects.BusinessEntities[i]).name));
}
}
private CrmSdk.CrmService GetCrmService(string organizationName)
{
// Setup the Authentication Token
CrmSdk.CrmAuthenticationToken token = newCrmAuthenticationToken();
token.OrganizationName = organizationName;
CrmSdk.CrmService crmService = new CrmSdk.CrmService();
crmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
crmService.CrmAuthenticationTokenValue = token;
return crmService;
}
}
где CrmSdk - 2007й сервис
Результат такой же, если складываешь его в папку с Crm-ом и пытаешься запустить открывает окно с ошибкой а в логах сервера пишет:
Сведения об исключении:
Тип исключения: HttpCompileException
Сообщение об исключении: c:\Program Files\Microsoft Dynamics CRM\CRMWeb\Redirect\Load.aspx.cs(46): error CS0246: Не удалось найти имя типа или пространства имен 'CrmSdk' (пропущена директива using или ссылка на сборку?)
Старый 18.11.2008, 19:37   #4  
Олег Михайлов is offline
Олег Михайлов
Участник
Аватар для Олег Михайлов
 
18 / 11 (1) +
Регистрация: 24.04.2008
CrmAuthenticationToken token;
token = new CrmAuthenticationToken();
token.OrganizationName = orgName;
token.AuthenticationType = 0;
CrmService service = new CrmService();
service.Url = hostName + "mscrmservices/2007/crmservice.asmx";
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
service.CrmAuthenticationTokenValue = token;

P.S.
Попробовали бы для начала разместить на сервере пустой проект, который только сервис инициализирует...
Старый 18.11.2008, 21:18   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
И насчет пространства имен CrmSdk тоже сомнительно. Это что вообще? Вы так веб референс назвали? Весь веб проект на том же сервере развернут?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 19.11.2008, 16:08   #6  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Всю работу с сервисом MSCRM надо оборачивать конструкцией using(new CrmImpersonator()){...}

Поправьте, если ошибаюсь.
Старый 19.11.2008, 16:56   #7  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Вобщем я смутился запутался и решил все переписать по-человечески. Получился более или менее адекватный код

Код:
 
using CrmSdk;
publicpartialclassRecieve : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
CrmAuthenticationToken token = newCrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = "ExpertSever";
CrmService service = newCrmService();
service.Url = "http://crm/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
ColumnSet cols = newColumnSet();
cols.Attributes = newstring[] { "name" };
Guid contactGuid = newGuid("861534A8-7B9B-DD11-8F66-00155D00C913");
opportunity opportunity = (opportunity)service.Retrieve(EntityName.opportunity.ToString(), contactGuid, cols);
string url = "http://portal.elfnet.local/Units/IT/CRMDocs/Forms/AllItems.aspx?View=%7B370E6746%2D5F6F%2D4C8D%2D9BAC%2DB5C59C33EA07%7D&FilterField1=project&FilterValue1=";
url += opportunity.name.ToString();
Response.Redirect(url, true);
}
}
в Debug-е Визуал Студии все работает на локальной машине. Но отдельно почему то не получается запустить. Скорее всего я что то не так делаю но незнаю что, ни в сыром виде ни в опубликованом оно не работает. Локальная машина ругается на 401, серверная с crm-ом ругается на сборку. Проблема не совсем по CRMу но все же непонятно что делать с проектом в данном случае. Работает через Debug, а никак по другому видимо где то параметр какой то или недокомпилировал где

Цитата:
Это что вообще? Вы так веб референс назвали?
Да это веб референс на .../mscrmservices/2007/crmservice.asmx

Цитата:
Весь веб проект на том же сервере развернут?
Вообще нет, но в идеале ему там место )

Цитата:
Всю работу с сервисом MSCRM надо оборачивать конструкцией using(new CrmImpersonator()){...}
ММм.. это откуда такая конструкция


И сразу вопрос до кучи, как передать ID сущности с которой делается запрос на этот файл?
В одной книжке я видел
string entityId = Request.QueryString["old"], но в моем случае она пустое значение возращает.

Последний раз редактировалось Казарин Александр; 19.11.2008 в 17:00.
Старый 19.11.2008, 17:45   #8  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Казарин Александр Посмотреть сообщение
ММм.. это откуда такая конструкция
Вот что думает по этому поводу MSDN:

http://msdn.microsoft.com/en-us/library/cc156363.aspx
Старый 19.11.2008, 17:47   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Выложите пожалуйста web.config для данной разрабатываемой страницы. Думаю, что корни 401 ошибки оттуда.
Старый 19.11.2008, 18:08   #10  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Цитата:
Сообщение от a33ik Посмотреть сообщение
Выложите пожалуйста web.config для данной разрабатываемой страницы. Думаю, что корни 401 ошибки оттуда.
Код:
<?xmlversion="1.0"?>
<configuration>
<appSettings>
<addkey="CrmSdk.CrmServiceWsdl"value="http://co-vrt-027:5555/MSCrmServices/2007/CrmService.asmx"/>
</appSettings>
<connectionStrings/>
<system.web>
<customErrorsmode="Off"/>

<compilationdebug="true"/>

<authenticationmode="Windows"/>

</system.web>
</configuration>
вот)

Цитата:
Вот что думает по этому поводу MSDN:
Хм, какой то секретный конструктор, впервый раз его увидел из всех примеров.
Старый 19.11.2008, 19:53   #11  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от a33ik Посмотреть сообщение
Всю работу с сервисом MSCRM надо оборачивать конструкцией using(new CrmImpersonator()){...}

Поправьте, если ошибаюсь.
Только при работе с aspx страницами. И то, скорее всего, если они развернуты на другом сайте и другом пуле приложений.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 19.11.2008, 19:56   #12  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
При компиляции вашего сайта должна генерироваться библиотека с прокси классом вашего веб сервиса (<namespace>.CrmSdk.dll) Попробуйте выложить ее в папку с вашим сайтом на конечном сервере.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 20.11.2008, 11:34   #13  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Только при работе с aspx страницами. И то, скорее всего, если они развернуты на другом сайте и другом пуле приложений.
Александр, страница разрабатывается, как расширение MS CRM и будет хостится в ISV каталоге MS CRM?
Старый 20.11.2008, 11:54   #14  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Цитата:
При компиляции вашего сайта должна генерироваться библиотека с прокси классом вашего веб сервиса (<namespace>.CrmSdk.dll) Попробуйте выложить ее в папку с вашим сайтом на конечном сервере.
При компиляции и публикации он создает 3 файла
App_WebReferences.dll
App_WebReferences.compiled
и App_Web_<случайная_комбинация>.dll - App_Web_r77mewsd.dll

При запуске на локальной машине ругается так же на 401, при помещении на сервер с crm-ом
Сведения об исключении:
Тип исключения: HttpParseException
Сообщение об исключении: Невозможно загрузить сборку 'App_Web_r77mewsd'. Перед доступом к данной странице проверьте, что сборка скомпилирована.

Цитата:
Александр, страница разрабатывается, как расширение MS CRM и будет хостится в ISV каталоге MS CRM?

Ну вообще задача такова - сделать редирект на страницу Sharepoint-а с соответствующим фильтром по проекту, например. Т.е. эта страница может быть где угодно, лишь бы выполняла свое предназначение. Т.е. сейчас, проект лежит на моей локальной машине, он работает при запуске Debug-а Визуал Студии, т.е. большего мне пока от него не надо(не считая передачи ID сущности в скрипт ), проблема лишь в том что вне Debug-а она почему то не работает В идеале в проекте этом должны будут появиться страницы с созданием данных в CRM но для людей не имеющих доступ на сам CRM поэтому думаю опять же не совсем в CRMе оно будет все.
Старый 20.11.2008, 14:07   #15  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
1. Подозреваю, что при директиве using кроме указания имени веб-референс, нужно добавлять исходное пространство имен, пример:
Код:
using MyProject.CrmSdk;
где MyProject - свойство Default Namespace Вашего проекта.
2. У меня была реальная ситуация, когда DefaultCredentials ничего не возвращают. Айтиншники говорят, что такое возможно, когда используется прокси-сервер или в брандмауэре чё-то настроено. Не вникал. Использовал обходой путь: сообщал креды системной учетки, у которой есть кое-какие широкие права на просмотр и создание нужных сущностей.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!

Последний раз редактировалось Likefire; 20.11.2008 в 14:10.
За это сообщение автора поблагодарили: Казарин Александр (1).
Старый 20.11.2008, 15:53   #16  
Казарин Александр is offline
Казарин Александр
Участник
 
58 / 10 (1) +
Регистрация: 17.10.2008
Адрес: Сыктывкар
Цитата:
2. У меня была реальная ситуация, когда DefaultCredentials ничего не возвращают
И действительно! Кредентали указал вручную и все заработало. По крайней мере открывает с локальной машины ) Спасибо за замечание.

Последний раз редактировалось Казарин Александр; 20.11.2008 в 17:34.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 4.0 Bookshelf Blog bot Dynamics CRM: Blogs 1 22.01.2009 04:46
Microsoft Dynamics CRM Team Blog: Trust for Delegation in List Web Part for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 15.01.2009 03:13
Microsoft Dynamics CRM Team Blog: Reports for CRM 4.0 using SQL Server 2008 and Report Builder 2.0 Blog bot Dynamics CRM: Blogs 0 11.11.2008 08:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:10.