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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.03.2010, 16:10   #1  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Доступ к данным из IFD CRM
Чета никак не могу разобраться... Есть хостинговая CRM, то есть пользователь при входе использует IFD и вводит логин/пароль на форме. Пишу кастомную страницу, которая должна работать с CrmService. Как правильно создать инстанс сервиса?
В SDK есть статья Web Form (IFD) Authentication, но там в CrmDiscoveryService передают логин и пароль пользователя. А как быть мне если я его не знаю, пользователь уже залогинился и ему нудно работаь с моей страницей.
Старый 18.03.2010, 16:40   #2  
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
Цитата:
Сообщение от ZooY Посмотреть сообщение
Чета никак не могу разобраться... Есть хостинговая CRM, то есть пользователь при входе использует IFD и вводит логин/пароль на форме. Пишу кастомную страницу, которая должна работать с CrmService. Как правильно создать инстанс сервиса?
В SDK есть статья Web Form (IFD) Authentication, но там в CrmDiscoveryService передают логин и пароль пользователя. А как быть мне если я его не знаю, пользователь уже залогинился и ему нудно работаь с моей страницей.
У меня всё работало одинаково что для On-Premise, что для IFD:

X++:
        string orgname = Request.QueryString["orgname"];
        using (new CrmImpersonator())
        {
            CrmAuthenticationToken token = CrmAuthenticationToken.ExtractCrmAuthenticationToken(Context, orgname);

            CrmService crmservice = new CrmService();
            crmservice.Url = (string)(Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSCRM").GetValue("ServerUrl")) + "/2007/CrmService.asmx";
            crmservice.UseDefaultCredentials = true;
            crmservice.CrmAuthenticationTokenValue = token;

//работа с вебсервисами тоже происходит здесь

        }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: ZooY (1).
Старый 18.03.2010, 17:01   #3  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
ААААА... Вот оно - CrmImpersonator... Веришь - нет - сколько пишу кода всякого, никогда не приходилось этим пользоваться. Спасибо!
Старый 18.03.2010, 20:45   #4  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Кстати, для On-Premise такой подход у меня не заработал.
Старый 18.03.2010, 20:54   #5  
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
Цитата:
Сообщение от ZooY Посмотреть сообщение
Кстати, для On-Premise такой подход у меня не заработал.
Странно. А можете показать web.config страницы?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 24.03.2010, 15:33   #6  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
X++:
<?xml version="1.0"?>
<configuration>
	<configSections>
		<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
			<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
				<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
				<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
					<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
					<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
					<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
					<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
				</sectionGroup>
			</sectionGroup>
		</sectionGroup>
	</configSections>
	<appSettings/>
	<connectionStrings/>
	<system.web>
		<customErrors mode="Off"/>
		<compilation debug="false">
			<assemblies>
				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="Microsoft.Crm.Sdk, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="Microsoft.Crm.SdkTypeProxy, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
		</compilation>
		<authentication mode="Windows"/>
		<pages>
			<controls>
				<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			</controls>
		</pages>
		<httpHandlers>
			<remove verb="*" path="*.asmx"/>
			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
		</httpHandlers>
		<httpModules>
			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
		</httpModules>
	</system.web>
	<system.codedom>
		<compilers>
			<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
				<providerOption name="CompilerVersion" value="v3.5"/>
				<providerOption name="WarnAsError" value="false"/>
			</compiler>
			<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
				<providerOption name="CompilerVersion" value="v3.5"/>
				<providerOption name="OptionInfer" value="true"/>
				<providerOption name="WarnAsError" value="false"/>
			</compiler>
		</compilers>
	</system.codedom>
	<system.webServer>
		<validation validateIntegratedModeConfiguration="false"/>
		<modules>
			<remove name="ScriptModule"/>
			<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
		</modules>
		<handlers>
			<remove name="WebServiceHandlerFactory-Integrated"/>
			<remove name="ScriptHandlerFactory"/>
			<remove name="ScriptHandlerFactoryAppServices"/>
			<remove name="ScriptResource"/>
			<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
		</handlers>
	</system.webServer>
	<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<dependentAssembly>
				<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
			</dependentAssembly>
			<dependentAssembly>
				<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
				<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
			</dependentAssembly>
		</assemblyBinding>
	</runtime>
</configuration>
Может тип аутентификации надо не Windows ставить, а какой другой?
Старый 24.03.2010, 20:44   #7  
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
Цитата:
Сообщение от ZooY Посмотреть сообщение
Может тип аутентификации надо не Windows ставить, а какой другой?
<authentication mode="Windows"/> - надо удалить и добавить <identity impersonate="true"/>
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 25.03.2010, 17:25   #8  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Не, это ничего не дало. Причем ошибка странная какая то:
Цитата:
Server was unable to process request.
systemuser With Id = 5b393b63-99f6-dd11-89ac-0003ffaf0812 Does Not Exist
Ошибка одна и таже, в незасисимости от того, что делает сервис. Пользователя с таким ID дествительно нет в CRM и откуда берется этот ID непонятно, может из AD.
Старый 25.03.2010, 21:02   #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
Цитата:
Сообщение от ZooY Посмотреть сообщение
Не, это ничего не дало. Причем ошибка странная какая то:

Ошибка одна и таже, в незасисимости от того, что делает сервис. Пользователя с таким ID дествительно нет в CRM и откуда берется этот ID непонятно, может из AD.
Действительно странно. Попробуйте в секцию httpModules добавить следующие строки:

Код:
      <add name="MapOrg" type="Microsoft.Crm.MapOrgEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="CrmAuthentication" type="Microsoft.Crm.Authentication.AuthenticationEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
чтобы получилось чтото вроде:

Код:
    <httpModules>
      <add name="MapOrg" type="Microsoft.Crm.MapOrgEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="CrmAuthentication" type="Microsoft.Crm.Authentication.AuthenticationEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 30.03.2010, 14:32   #10  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Не помогло
Кстати, вот этот GUID 5b393b63-99f6-dd11-89ac-0003ffaf0812, который светиться в ошибке... Если проверить параметр service.CrmAuthenticationTokenValue.CallerId то вот он как раз там.
Учитывая что такого пользователя действительно нет в CRM, понятно почему такая ошибка. но не понятно откуда этот пользователь берется.

Последний раз редактировалось ZooY; 30.03.2010 в 14:35.
Старый 30.03.2010, 14:41   #11  
IgorF is offline
IgorF
Учаснег
Аватар для IgorF
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Регистрация: 23.07.2007
Адрес: Поребрик сити
Поищите такого юзера через sql , скорее всего этот систем или integration.
посмотрел наши web.conf стоит <authentication mode="Windows"/> все работает.

using (new CrmImpersonator())
{
//Create a token with the static method. ExtractCrmAuthenticationToken
//The 'Context' used here is the Page.Context.
CrmAuthenticationToken token = CrmAuthenticationToken.ExtractCrmAuthenticationToken(Context, orgname);

CrmService service = new CrmService();
service.CrmAuthenticationTokenValue = token;
service.Credentials = CredentialCache.DefaultCredentials;
Все в рамках такой конструкции
}
ничего более особенного не делали.

А вот еще что вспомнил, обязательное расположение вроде как должно быть в ISV, как в другой директории размещать есть способо в интернет описывающий.
__________________
http://about.me/fedorovigor
Старый 30.03.2010, 15:27   #12  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Цитата:
Сообщение от IgorF Посмотреть сообщение
Поищите такого юзера через sql , скорее всего этот систем или integration.
посмотрел наши web.conf стоит <authentication mode="Windows"/> все работает.

using (new CrmImpersonator())
{
//Create a token with the static method. ExtractCrmAuthenticationToken
//The 'Context' used here is the Page.Context.
CrmAuthenticationToken token = CrmAuthenticationToken.ExtractCrmAuthenticationToken(Context, orgname);

CrmService service = new CrmService();
service.CrmAuthenticationTokenValue = token;
service.Credentials = CredentialCache.DefaultCredentials;
Все в рамках такой конструкции
}
ничего более особенного не делали.

А вот еще что вспомнил, обязательное расположение вроде как должно быть в ISV, как в другой директории размещать есть способо в интернет описывающий.
Опа... Нашел такого пользователя. Это один из пользователей (а точнее первый по порядку) в другом, дефолтном, инстансе CRM.
Только непонятно причем тут этот инстанс, если я четко задаю имя организации.
Или эта конструкция работает не работает с мультиорганизационной установкой CRM?

А деляю все точно так. Даже попробовал переделал свой код точно так, как вы написали - результат тот же.
Старый 30.03.2010, 15:53   #13  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Нашел вот такую тему
http://social.microsoft.com/Forums/e...0-e22814bd04ba
Возможно проблема в том, что я запускаю свое расширение по адресу http://serverort/ISV/MyApp
а нужно типа по адресу http://serverort/MyOrg/ISV/MyApp, но по этому адресу оно просто не открывается
Старый 30.03.2010, 16:13   #14  
IgorF is offline
IgorF
Учаснег
Аватар для IgorF
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Регистрация: 23.07.2007
Адрес: Поребрик сити
Цитата:
Сообщение от ZooY Посмотреть сообщение
Опа... Нашел такого пользователя. Это один из пользователей (а точнее первый по порядку) в другом, дефолтном, инстансе CRM.
Только непонятно причем тут этот инстанс, если я четко задаю имя организации.
Или эта конструкция работает не работает с мультиорганизационной установкой CRM?

А деляю все точно так. Даже попробовал переделал свой код точно так, как вы написали - результат тот же.
у нас работает для многих организаций, если проблема не решится, могу подтянуть разработчиков, они то уж точно знают что не так у вас)
__________________
http://about.me/fedorovigor
Старый 30.03.2010, 19:39   #15  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
В общем убрал из web.config все, сократив его до вот такого:
X++:
<?xml version="1.0"?>
<configuration>
	<appSettings/>
	<connectionStrings/>
	<system.web>
		<httpModules>
			<add name="MapOrg" type="Microsoft.Crm.MapOrgEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
			<add name="CrmAuthentication" type="Microsoft.Crm.Authentication.AuthenticationEngine, Microsoft.Crm, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
		</httpModules>
		<identity impersonate="true"/>
		<compilation debug="true">
			<assemblies>
				<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
				<add assembly="Microsoft.Crm.Sdk, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
				<add assembly="Microsoft.Crm.SdkTypeProxy, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
			</assemblies>
		</compilation>
	</system.web>
</configuration>
Пользователь стал определяться правильно, но появился новый косяк. В коде перестали восприниматься все конструкции .NET 3.5, как то оператор var, конструкции вида myvar = new myclass { attr = value };
Старый 30.03.2010, 20:33   #16  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Наконец то появилось некоторое понимание того, что происходит %)

Мое расширение не открывалось по адресу http://server:рort/MyOrg/ISV/MyApp потому что стартовой страницей был не ASPX, а HTML файл.
В общем получается такая картина, если открывать расширение по адресу http://server:рort/MyOrg/ISV/MyApp то правильно определяется текущий пользователь, потому как срабатывает MapOrg, и сервис считывает данные из правильного инстанса CRM. Но при этом не работают возможности 3.5ого фреймворка.
Если же открывать расширение по адресу http://server:рort/ISV/MyApp то MapOrg не срабатывает, пользователь определяется неправильно, но зато все возможности фреймворка наличиствуют.
Надо полагать в CRM не хватает каких то фреймворковых библиотек, но каких?

Кстати опыты показали что в web.config вовсе не нужно добавлять строки с настройкой имперсонализации и модулям, потому что они есть в web.config самого CRM. (это при условии конечно что ваше расширение устанавливается в папку ISV)
Старый 30.03.2010, 20:47   #17  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
В SDK написано, что CRM поддерживает Framework 3.0. Но на сервере установлен 3.5. Не понятно почему так получается, что если срабатывает MapOrg то приложение перестает поддерживать 3.5 фреймворк.
Старый 30.03.2010, 21:08   #18  
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
Посмотрите этот топик. Вроде как Ваша ситуация.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: ZooY (1).
Старый 30.03.2010, 22:24   #19  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Мне кажется я до конца понял как это все работает, и насчет 3.5 фреймворка и насчет всего остального. НО...

Как я раньше писал расширения... Делаеш в VS проект типа Веб-сайт. Кладеш его в папку ISV, в IIS настраиваеш как отдельное Веб-расширение и потом обращаешся по адресу /ISV/MyApp/
Имя организации передаеш пареметром в строке адреса. Все работает и все прекрасно, при этом все расширение лежит в одной отдельной папочке.

В SDK в статье Custom Code Best Practices описан другой, типа более правильны подход к размещению расширений. Там сказано что aspx-файлы должны быть в папке расширения, а все библиотеки в папке bin сервера CRM. ИМХО это не очень парвильно, засорять эту папку своими библиотеками. Там же написано что если у тебя стоит Rollup 2 то можно оставлять библиотеки в папке bin расширения, но для этого нужно прописать их в директиве @Assebly. Объясните пожалуйста как это сделать, я чета ничего не понял. И потом, это как же получается, каждый раз после компиляции сайта нужно во все страницы добавлять эту директиву. В случае перекомпиляции делать это опять... Или как то это можно на автомате делать?
Старый 31.03.2010, 07:54   #20  
Артем 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
Насколько я понял, нужно просто перечислить зависимые библиотеки при помощи этой директивы - просто откройте код вашей страницы и поместите эту директиву в начале до тега <html>. В этой же статье (http://msdn.microsoft.com/en-us/library/dd548493.aspx), кстати, описывается альтернативый подход: эти библиотеки можно прописать в web.config вашего приложения. В этом случае использовать @ Assembly не требуется.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Теги
c#, ifd, webservice, .net

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! CRM 4.0 Disaster Recovery Blog bot Dynamics CRM: Blogs 2 26.02.2016 08:23
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
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: Internet Facing Deployment (IFD) Installation Basics Blog bot Dynamics CRM: Blogs 0 20.09.2008 03:12

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

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

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