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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.08.2009, 17:53   #1  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Регистрация Web service на aspx странице.
Тема больше по asp.net чем по CRM однако напрямую с ним связана. Мне нужно из CRM по нажатию на кнопку вызвать свою страничку, из которой я буду потом обращаться к веб сервисам sharepoint. Так вот .. как сослаться на веб-сервис из .aspx страницы? Отдельного приложения для этой страницы я создавать не буду.
Старый 14.08.2009, 09:55   #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
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
Тема больше по asp.net чем по CRM однако напрямую с ним связана. Мне нужно из CRM по нажатию на кнопку вызвать свою страничку, из которой я буду потом обращаться к веб сервисам sharepoint. Так вот .. как сослаться на веб-сервис из .aspx страницы? Отдельного приложения для этой страницы я создавать не буду.
Добрый день. Делаете WebReference на вебсервис шарапоинта. Что ж тут такого военного?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 14.08.2009, 12:07   #3  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
В случае если я создаю отдельное приложение со своим конфигом это понятно. В студии добавляешь референс и все.. А если это просто страница, то придется править конфиг CRM чтобы сослаться на сервис шарепоинта. Без конфига никак?
Старый 14.08.2009, 12:30   #4  
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
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
В случае если я создаю отдельное приложение со своим конфигом это понятно. В студии добавляешь референс и все.. А если это просто страница, то придется править конфиг CRM чтобы сослаться на сервис шарепоинта. Без конфига никак?
Это незачем вообще. URL вебсервиса Sharepoint - вы можете задавать в codebehind страницы, так что не вижу никаких проблем с этим связанных. Другое уже дело - где Вы эту ссылку будете хранить. Мог бы рекомендовать в качестве нормального хранилища - реестр. Уже не раз пользовался в своих разработках.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 14.08.2009 в 12:51.
Старый 14.08.2009, 13:24   #5  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Т.е. динамически можно создать прокси класс ссылкой на веб сервис? Это как?
Старый 14.08.2009, 13:45   #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
Цитата:
Сообщение от Kipetcoff Посмотреть сообщение
Т.е. динамически можно создать прокси класс ссылкой на веб сервис? Это как?
Создание экземпляра прокси класса не выполняется динамически, как Вы подумали. В странице - даётся веб референс на веб сервис Sharepoint. Об этом - уже догворились

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

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 14.08.2009, 14:49   #7  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Как на странице можно сделать референс на веб сервис? В этом та главный вопрос.
Я тут сейчас вот такую штуку мучу.. не работает правда пока..

Код:
<%@ Page Language="C#" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI.WebControls" Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	
<script runat="server"> 

	[System.Diagnostics.DebuggerStepThroughAttribute]
	[System.ComponentModel.DesignerCategoryAttribute("code")]
	[System.Web.Services.WebServiceBindingAttribute(Name = "ListsSoap", Namespace = "http://schemas.microsoft.com/sharepoint/soap/")]
	[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
	public class list : System.Web.Services.Protocols.SoapHttpClientProtocol
	{

		[System.Diagnostics.DebuggerStepThroughAttribute()]
		public list()
		{
			this.Url = "http://пампампам.ru/Docs/_vti_bin/lists.asmx";
		}

		[System.Diagnostics.DebuggerStepThroughAttribute()]
		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/CheckOutFile", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
		public bool CheckOutFile (string pageUrl, string checkoutToLocal, string lastmodified)
		{
			object[] results = this.Invoke("CheckOutFile", new object[] { pageUrl, checkoutToLocal, lastmodified});
			return ((bool)(results[0]));
		}

		[System.Diagnostics.DebuggerStepThroughAttribute()]
		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/AddAttachment", RequestNamespace = "http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace = "http://schemas.microsoft.com/sharepoint/soap/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
		public int AddAttachment(string listName, string listItemID, string fileName, byte[] attachment)
		{
			object[] results = this.Invoke("AddAttachment", new object[] {listName, listItemID, fileName, attachment});
			return ((int)(results[0]));
		}
	}
	  
	protected void Page_Load(object sender, EventArgs e)
	{	
		
	}

	protected void btnUpload_Click(object sender, EventArgs e)
	{
		if (uplControl.PostedFile == null)
			return;	

		System.IO.Stream fStream = uplControl.PostedFile.InputStream;
		byte[] contents = new byte[fStream.Length];

		fStream.Read(contents, 0, (int)fStream.Length);
		fStream.Close();

		list docList = new list();
		docList.Credentials = new System.Net.NetworkCredential("логин", "пароль", "avenir");

		//%2fDocs%2fnew%5floan%2f1001744cb185de1186a10003ff966666
		//docList.AddAttachment("1001744cb185de1186a10003ff966666", "13", uplControl.PostedFile.FileName, contents);
		docList.CheckOutFile("http://пампампам.ru/Docs/new_loan/1001744cb185de1186a10003ff966666/PluginRegistration.zip", "true", "10 Aug 2009 17:57:00 GMT");
	}
	
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    
    <form id="form1" runat="server">
    <%--<asp:ScriptManager runat="server" ID="scriptManager">
                <Services>
                    <asp:ServiceReference  Path="http://пампампам/Docs/_vti_bin/lists.asmx" />
                </Services>                
    </asp:ScriptManager>--%>
    <div>				
        <input id="uplControl" type="file" runat="server" title="upldFileBox"/>        
        <asp:Button id="btnUpload" OnClick="btnUpload_Click" runat="server" 
      Text="Upload File"></asp:Button>      
    </div>
    </form>
</body>
</html>
Т.е. написал свой прокси класс. Может этот пример прояснит что я хочу, а то мы пока др др не понимаем чувсвую.
Старый 14.08.2009, 15:06   #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
Под рукой нет шарапоинта, потому покажу на примере вебсервисов самого CRM.

Надеюсь скриншоты объяснят, что я имел ввиду.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 343
Размер:	128.3 Кб
ID:	4987   Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 287
Размер:	130.6 Кб
ID:	4988  

Нажмите на изображение для увеличения
Название: 3.jpg
Просмотров: 311
Размер:	154.0 Кб
ID:	4989   Нажмите на изображение для увеличения
Название: 4.jpg
Просмотров: 459
Размер:	127.3 Кб
ID:	4990  

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

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 14.08.2009, 15:20   #9  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
Это все понятно. Я уже писал выше что прикрутить сервис к веб приложению не стставляет труда. Да, я могу для своей страницы создать отдельное приложение, выделить ей папку в иис и оттуда его дергать. Но плодить приложения для каждого случая не самый лучший способ я счетаю.
Я просто помещаю мою страницу в каталог \ISV\UploadFile и потом вызываю эту страницу http://localhost:5555/ISV/UploadFile/UploadFile.aspx как часть CRM. Таким образом я не создав отдельного приложения работаю со страницей. Минус этого подхода, что эта страница получается отщепенская. Она относится к веб-приложению CRM и соответственно если и делать ссылку на сервис, то придется наверное открыть в студии все приложение CRM и сделать ссылку на сервис. Так вот..я хочу чтобы на сервис ссылалась только эта отщепенская страница.
Старый 14.08.2009, 15:48   #10  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Погодите... Вы идете в правильном направлении, только надо уточнить понятия.
UploadFile, который Вы создаете в директории ISV и есть отдельное веб-приложение, только в IIS'е его надо оформить как Виртуальный узел. Тогда в VS его можно будет открыть через "Open/Web Site..." и работать как с самостоятельным проектом, в том числе и нужные web-референсы добавлять.
Старый 14.08.2009, 17:17   #11  
Kipetcoff is offline
Kipetcoff
Участник
 
136 / 16 (1) ++
Регистрация: 20.05.2009
Адрес: Санкт-Петербург
В общем я продолжил углубленное изучение вызова веб- сервиса и все таки добился определенных успехов. Конечно можно ковырять ИИС,но как-то это не очень хорошо.. Хотелось бы чтобы все обошлось помещением страницы и настройкой CRM. Что у меня получилось?
Выше я привел код страницы с определенном на ней прокси классе. У меня вылетали ошибки на вызове методов. Я добавил метод попроще

Код:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/AddList", RequestNamespace = "http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace = "http://schemas.microsoft.com/sharepoint/soap/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
		public System.Xml.XmlNode AddList(string listName, string description, int templateID)
		{
			object[] results = this.Invoke("AddList", new object[] {
                        listName,
                        description,
                        templateID});
			return ((System.Xml.XmlNode)(results[0]));
		}
и....о чудооо. Он заработал. Я предполагаю,что все таки можно ограничиться одной страницей. Только пока не пойму почему не работают CheckOutFile и AddAttachment Причем они не работают даже если я без выпендронов создаю приложение и ссылаюсь на веб-сервис и вызываю эти методы. Возможно передаю неправильные параметры.
Теги
c#, webreference, .net

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: CRM Online: ‘Contact Us’ Web Form Made Easy Blog bot Dynamics CRM: Blogs 0 20.05.2009 05:05
Проблема с состоянием сеанса на ASPX странице (Session) shaban Dynamics CRM: Разработка 3 06.02.2009 07:48
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: List Web Part for Microsoft Dynamics CRM 4.0: Understanding Connections Blog bot Dynamics CRM: Blogs 0 20.01.2009 02:07
jodonnell: Web Seminar Series - Why ISV's are Partnering with Microsoft Dynamics Blog bot Dynamics CRM: Blogs 0 17.12.2008 12:05

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

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

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