AXForum  
Zurück   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.10.2008, 12:13   #1  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Обращение к CrmService
Стандартный код выдает ошибку

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.IO;
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 System.Xml;
using CrmSdk;
using CrmSdk.Discovery;
public partial class UpdateActivity : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "text/xml";

CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = "Samarasoft";

CrmService crmService = new CrmService();
crmService.CrmAuthenticationTokenValue = token;
crmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
AppSettingsReader appSettings = new AppSettingsReader();
crmService.Url = appSettings.GetValue("CrmSdk.CrmService", Type.GetType("System.String")).ToString();

task my_task = new task();
my_task.subject = "my_task_1";
Guid t_guid = new Guid("A64664F4-E699-DD11-B4E0-00A0C5B316E9");
Owner t_owner = new Owner();
t_owner.Value = t_guid;
t_owner.type = EntityName.systemuser.ToString();
my_task.ownerid = t_owner;
Guid accountId = crmService.Create(my_task);
}
}

Ошибка идет на шаге Guid accountId = crmService.Create(my_task); такая:

Exception information:
Exception type: SoapException
Exception message: System.Web.Services.Protocols.SoapException: Сервер не распознал значение заголовка HTTP SOAPAction: http://schemas.microsoft.com/crm/200...ervices/Create.
в System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
в System.Web.Services.Protocols.SoapServerProtocol.Initialize()
в System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
в System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Request information:
Request URL: http://crm:1001/UpdateActivity.aspx?...Mode=Completed
Request path: /UpdateActivity.aspx
User host address: 192.168.100.62
User:
Is authenticated: False
Authentication Type:
Thread account name: NT AUTHORITY\NETWORK SERVICE

Что то я уже всю голову сломал в чем дело - стандартная конструкция не работает
Подскажите в чем может быть дело...
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 17.10.2008, 12:46   #2  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
В других конструкциях он такое же выдает, например
activitypointer act = (activitypointer)crmService.Retrieve(EntityName.activitypointer.ToString(), idGuid, new AllColumns());

Какой то неправильный у меня сервис получился, а в чем причина не пойму...
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 17.10.2008, 14:45   #3  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Это вы скопировали из дебаггера? Приведите пожалуйста стек трасировки из лога ошибок сервера.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Alt 17.10.2008, 16:46   #4  
Гуревич Денис ist offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Registriert seit: 04.08.2008
Ort: Москва
Вообще-то, поскольку у Вас aspx-страничка, то я бы для начала вот это прочитал:
http://msdn.microsoft.com/en-us/library/cc151050.aspx
This post has been rated by: sergeyjb (1).
Alt 19.10.2008, 12:16   #5  
maclai ist offline
maclai
Участник
 
14 / 11 (1) +
Registriert seit: 09.10.2008
Сергеи, посмотрите http://localhost:<порт>/sdk/list.aspx. Похоже,
при создании task activityid является обязателним атрибутом.
This post has been rated by: sergeyjb (1).
Alt 20.10.2008, 08:14   #6  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
maclai:
Интересная страница, не знал о ее существовании.
Действительно поле activityid отмечено как Required For Grid.
Удивило то, что ownerid не помечено как обязательное, хотя на форме поле "ответственный" стоит с красной звездочкой.

Гуревич Денис:
Спасибо за ссылку, сейчас попробую как там пишут. Есть подозрение судя по ошибкам что с самим сервисом не порядок а не с набором отправляемых полей. Я ожидал бы другой ошибки если обязательное поле отсутствовало.
Хотя попробую все варианты.

Артем, это часть целого сообщения в системном журнале: "Журналы Windows - Приложение".
Если есть отдельный журнал ошибок CRM сервера то подскажите где его посмотреть.
А из системного полный текст ошибки (точнее предупреждения):

Code:
 
Event code: 3005 
Event message: Возникло необработанное исключение. 
Event time: 20.10.2008 8:47:52 
Event time (UTC): 20.10.2008 3:47:52 
Event ID: 907e722b17074104b8b6d5540dbae94c 
Event sequence: 6 
Event occurrence: 1 
Event detail code: 0 
 
Application information: 
Application domain: /LM/W3SVC/3/ROOT-1-128689480638620121 
Trust level: Full 
Application Virtual Path: / 
Application Path: C:\inetpub\Infrastructure\ 
Machine name: SRV-CRM-01 
 
Process information: 
Process ID: 1828 
Process name: w3wp.exe 
Account name: NT AUTHORITY\NETWORK SERVICE 
 
Exception information: 
Exception type: SoapException 
Exception message: System.Web.Services.Protocols.SoapException: Сервер не распознал значение заголовка HTTP SOAPAction: http://schemas.microsoft.com/crm/200...ervices/Create.
в System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
в System.Web.Services.Protocols.SoapServerProtocol.Initialize()
в System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
в System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) 
 
Request information: 
Request URL: http://crm:1001/UpdateActivity.aspx?...Mode=Completed 
Request path: /UpdateActivity.aspx 
User host address: 192.168.100.62 
User: 
Is authenticated: False 
Authentication Type: 
Thread account name: NT AUTHORITY\NETWORK SERVICE 
 
Thread information: 
Thread ID: 5 
Thread account name: NT AUTHORITY\NETWORK SERVICE 
Is impersonating: False 
Stack trace: в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
в CrmSdk.CrmService.Create(BusinessEntity entity) в c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\5c7d8db1\29570109\App_WebReferences.wh6ss6eb.0.cs:строка 204
в UpdateActivity.Page_Load(Object sender, EventArgs e) в c:\inetpub\Infrastructure\UpdateActivity.aspx.cs:строка 64
в System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
в System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
в System.Web.UI.Control.OnLoad(EventArgs e)
в System.Web.UI.Control.LoadRecursive()
в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
 
 
Custom event details:
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 20.10.2008, 08:32   #7  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Добавление конструкции для activityid проблему не решило, но на будущее лишним явно не будет.
Key t_key = new Key();
t_key.Value = new Guid();
my_task.activityid = t_key;

Сейчас буду с Impersonate разбираться.
Не зря в логе:
..............
Is authenticated: False
..............
Is impersonating: False
..............

Не думал сначала что обращение к сервису с ASPX страницы отличается от стандартного примера в SDK. Предполагал что они в расчете на WEB доступ пример писали.
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 20.10.2008, 14:09   #8  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Сделал по примеру как в ссылке для ASP:

Code:
 
using System;
.................................
using Microsoft.Win32;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
public partial class UpdateActivity : System.Web.UI.Page
{
    public string orgname;
    public string crmurl;
    public string metaurl;
    protected void Page_Load(object sender, EventArgs e)
    {
        RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");
        string ServerUrl = regkey.GetValue("ServerUrl").ToString();
        crmurl = ServerUrl + "/2007/crmservice.asmx";
        metaurl = ServerUrl + "/2007/metadataservice.asmx";
        orgname = "Samarasoft";
        using (new CrmImpersonator())
        {
            CrmAuthenticationToken token;
            token = CrmAuthenticationToken.ExtractCrmAuthenticationToken(Context, orgname);
            token.OrganizationName = orgname;
            token.AuthenticationType = 0;
            CrmService service = new CrmService();
            service.Credentials = System.Net.CredentialCache.DefaultCredentials;
            service.CrmAuthenticationTokenValue = token;
            service.Url = crmurl;
        }
        Response.Write("Done");
    }
}
Код new CrmImpersonator() вызывает ошибку обращения к несуществующему токену...

Code:
 
Event code: 3005 
Event message: Возникло необработанное исключение. 
Event time: 20.10.2008 14:50:28 
Event time (UTC): 20.10.2008 9:50:28 
Event ID: a22bbfc8755f4f539d4a8ad4786cebed 
Event sequence: 47 
Event occurrence: 3 
Event detail code: 0 
 
Application information: 
Application domain: /LM/W3SVC/4/ROOT-8-128689694218393361 
Trust level: Full 
Application Virtual Path: / 
Application Path: C:\inetpub\asp_automate\ 
Machine name: SRV-CRM-01 
 
Process information: 
Process ID: 5768 
Process name: w3wp.exe 
Account name: NT AUTHORITY\NETWORK SERVICE 
 
Exception information: 
Exception type: InvalidOperationException 
Exception message: OpenThreadToken failed with hr = 1008 
 
Request information: 
Request URL: http://crm:1003/UpdateActivity.aspx?sState=Update 
Request path: /UpdateActivity.aspx 
User host address: 192.168.100.62 
User: 
Is authenticated: False 
Authentication Type: 
Thread account name: NT AUTHORITY\NETWORK SERVICE 
 
Thread information: 
Thread ID: 7 
Thread account name: NT AUTHORITY\NETWORK SERVICE 
Is impersonating: False 
Stack trace: в Microsoft.Crm.Sdk.CrmImpersonator.Impersonate()
в UpdateActivity.Page_Load(Object sender, EventArgs e) в c:\inetpub\Asp_automate\UpdateActivity.aspx.cs:строка 33
в System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
в System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
в System.Web.UI.Control.OnLoad(EventArgs e)
в System.Web.UI.Control.LoadRecursive()
в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
 
Custom event details:
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 20.10.2008, 17:07   #9  
Гуревич Денис ist offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Registriert seit: 04.08.2008
Ort: Москва
В web.config'е Вашего приложения должно быть:
<identity impersonate="true"/>
Есть?
Alt 22.10.2008, 12:11   #10  
maclai ist offline
maclai
Участник
 
14 / 11 (1) +
Registriert seit: 09.10.2008
Добавление этого кода:

[quote=sergeyjb;180050]Добавление конструкции для activityid проблему не решило, но на будущее лишним явно не будет.
Key t_key = new Key();
t_key.Value = new Guid();
my_task.activityid = t_key;]

даст вам гуид null, что само по себе является ошибкой.
Если сама сущность создается через создание ее гуида, как компонент вебсервиса - значит или не все условия генерации выполняются, или генератор (сервис) используется не верно...
Я сам ломаю голову над своим generic sql erorr... если добьешь - черкни, в чем там дело было
Alt 22.10.2008, 13:44   #11  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Так надо (проверить пока не могу)?:
Key t_key = new Key();
t_key.Value = NewGuid();
my_task.activityid = t_key;

Судя по описанию должен дать новый Гуид
Guid.NewGuid Method - This is a convenient static method that you can call to get a new Guid

У меня проблема ни с generic sql erorr (до этого не доходит пока даже), а с авторизацией...
Не было <identity impersonate="true"/> - поставил...
Теперь надо с настройками IIS7 на стороне сервера разобраться: с пулами приложений (мое связано с DefaultAppPool сейчас) и "проверка подлинности" (у меня включены на этом узле "Олицетворение ASP.NET" и "Проверка подлинности Windows").
Сейчас браузер выдает ошибку
"Ошибка HTTP 500.24 - Internal Server Error
Обнаружены значения параметров ASP.NET, которые неприменимы в интегрированном режиме управляемого конвейера."

Так что до проблем с пустым Гуидом еще как до луны
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 23.10.2008, 14:55   #12  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
А какие возможны варианты запрограммировать поведение ISV кнопки на форме? Кроме как через ASP страницу? Или это единственный метод?
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 27.10.2008, 16:27   #13  
a33ik ist offline
a33ik
Чайный пьяница
Benutzerbild von a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.243 / 896 (36) +++++++
Registriert seit: 02.07.2008
Ort: Greenville, SC
Zitat:
Zitat von sergeyjb Beitrag anzeigen
А какие возможны варианты запрограммировать поведение ISV кнопки на форме? Кроме как через ASP страницу? Или это единственный метод?
Весь функционал, который требуется от кнопки - выносить в Java Script, но с дебагом - намучаетесь конечно...
А какой именно функционал от этой кнопки требуется?
Alt 28.10.2008, 13:20   #14  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Вопрос в общем - о возможностях.

А от данной кнопки в частности требуется только смена статуса активности через срм-сервис чтобы воркфлоу видела эти изменения.
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 28.10.2008, 14:57   #15  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Сергей, возможно более подробную информацию об ошибке вы получите из логов сервера. Вот статья о том как можно их включить: http://support.microsoft.com/kb/907490/en-us. В своё время я так и отлаживался, так как в дебагер валится лишь общая ошибка веб сервиса.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
This post has been rated by: sergeyjb (1).
Alt 29.10.2008, 07:23   #16  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Спасибо Артем, а то с отладкой мне трудновато
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 29.10.2008, 13:58   #17  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Помогло проблему устранить?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Alt 30.10.2008, 14:30   #18  
sergeyjb ist offline
sergeyjb
Участник
Benutzerbild von sergeyjb
 
68 / 12 (1) ++
Registriert seit: 01.10.2008
Я сейчас переключился на интеграцию с шарпоинтом экстренно, через пару дней к этим кнопкам вернусь - тогда и опробую.

Тут вопрос возник с плагином на удаление акаунта.
На первой же строке валиться, причем такой же плагин на крейт акаунта работает.
Выдает ошибку:
Не удалось привести тип "Microsoft.Crm.Sdk.Moniker" объекта к типу "Microsoft.Crm.Sdk.DynamicEntity".
Что эта ошибка вообще означает? И почему при крейте проблем с приведением у него нет?
Выдает такое как на пре- так и пост-срабатываение.
Есть какая-то особенность обращения к объекту, вызвавшему плагин на удаление?

Code:
 
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using ShPAccountDeletePlugin.st2;
namespace ShPAccountDeletePlugin
{
    public class UpdateAccountOnDelete : IPlugin
    {
        public void Execute(IPluginExecutionContext context)
        {
            DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties[ParameterName.Target];
..............................................
        }
    }
}
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Alt 30.10.2008, 14:50   #19  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Видимо это и означает - типовой class cast. Properties[ParameterName.Target] имеет тип Moniker а не DynamicEntity. Почему - вопрос хороший.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Alt 30.10.2008, 15:01   #20  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Из опыта работы с CRM 3.0... Плагины (тогда еще колауты) событий создания и изменения тогда тоже оперировали DynamicEntity, а вот события смены состояния и удаления, по какой-то идиотской логике получали лишь id и имя сущности. Теперь и то и другое содержится в классе Moniker. Видимо вам придется вычитывать объект самостоятельно. Печально, но Microsoft последовательна в своем идиотизме.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Быстродействие CrmService Bakai Madybaev Dynamics CRM: Разработка 16 21.03.2009 22:57
Обращение к полю сущности MFCшный Wizard Dynamics CRM: Разработка 28 12.02.2009 14:35
аутентификация crmService if_maks Dynamics CRM: Разработка 2 25.12.2008 11:52
Обращение! - Ответственный контакт? AlekseyS Dynamics CRM: Разработка 1 09.09.2008 13:04
Обращение: невозможно добавить Контракт Lazarus Dynamics CRM: Функционал 2 01.07.2008 13:02

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 21:03 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.