ASP.NET MVC: Установка SAPE кода на сайте

Могу предположить, что вы уже попытались самостоятельно установить SAPE-код на своем сайте и, наверняка, уже попытались найти найти информацию на основном форуме этой системы. У меня не получилось найти чего-то более и менее разумного. Пришлось обращаться к автору сборки, который любезно подсказал, что надо делать всё “вручную”.

Настройка конфигурации (web.config)

Для начала в секцию “configSections” добавляем настройку sape-библиотеки (см. строки с 8 по 13):

1: <configuration> 2: <configSections> 3: <sectionname=»entityFramework» 4: type=»System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 5: EntityFramework, Version=4.3.1.0, Culture=neutral, 6: PublicKeyToken=b77a5c561934e089″ /> 7: 8: <sectionGroupname=»effetto.Sape»> 9: <sectionname=»SapeConfig»type=»effetto.Sape.SapeConfigSection, SAPE» 10: allowLocation=»true» 11: requirePermission=»false» 12: allowDefinition=»Everywhere»/> 13: </sectionGroup> 14: 15: </configSections> 16: 17: <!— много другого полезного кода настроек —> 18: 19: </configuration>

После этого перед секцией “system.web” (хотя можно и после нее, главное чтобы в эту ветку конфигурации) помещаем код:

1: <effetto.Sape> 2: <SapeConfigUserId=»[ваш код пользователя]»> 3: <DefaultDocuments> 4: <addName=»/site/index»/> 5: </DefaultDocuments> 6: </SapeConfig> 7: </effetto.Sape>

Хотя в принципе, можно этот код не размещать, так если только на случай открыть конфигурации и вспомнить какой у вас код. Я в конечной реализации удалил второй код, и всё равно всё заработало.

Создаем свой ActionResult для SAPE

Чтобы реализовать рендеринг SAPE-ссылок на ASP.NET MVC надо создать свой собственный результат обработки запроса (ActionResult). Я назвал свой класс SapeLinksResult. Для начала добавил необходимые пространства имен:

1: using System.Web.Mvc; 2: using effetto.Sape;

Далее сам код класса SapeLinksResult. Я покажу весь код целиком, чтобы проще было копировать:

1: publicclass SapeLinksResult : ActionResult 2: { 3: private SapeUrl url; 4: private SapePage page; 5: private SapeHost host; 6: 7: publicstring UserId { get; private set; } 8: 9: publicstring HostName { get; private set; } 10: 11: public SapeLinksResult(string userId, string hostname) 12: { 13: if (String.IsNullOrEmpty(userId)) 14: thrownew ArgumentNullException(«userId»); 15: if (String.IsNullOrEmpty(hostname)) 16: thrownew ArgumentNullException(«hostname»); 17: this.UserId = userId; 18: this.HostName = hostname; 19: 20: url = new SapeUrl(); 21: 22: SapeUser user = SapeFactory.Factory.GetUser(this.UserId); 23: host = user.GetHost(hostname); 24: page = host.GetPage(url); 25: } 26: 27: publicoverridevoid ExecuteResult(ControllerContext context) 28: { 29: HttpResponseBase response = context.HttpContext.Response; 30: HttpRequestBase request = context.HttpContext.Request; 31: List<SapeLink> links = null; 32: if (page != null) 33: { 34: links = page.GetLinks(); 35: 36: if (links != null) 37: { 38: foreach (SapeLink link in links) 39: { 40: response.Write(link.RawLink + host.Delimiter); 41: } 42: } 43: } 44: } 45: }

 

Использование нового SapeLinksResult

Чтобы использовать данный класс перейдем в контроллер (мой называется Home) и добавим новый метод SapeCode. Сам метод прост до безобразия, обратите внимание на атрибут над методом – это важно.

1: [ChildActionOnly] 2: public ActionResult SapeCode() 3: { 4: returnnew SapeLinksResult(«ваш_идентификационный_номер_SAPE», «вашсайт.ру»); 5: }

Не забудьте указать свой идентификационный номер в системе SAPE и доменное имя вашего сайта. На основании этих данных и будут загружаться ссылки для страниц.

Теперь надо вызвать этот метод на тех страницах, где вы хотели бы разместить SAPE-ссылки. Также можно разместить в главном шаблоне сайта, и тогда код будет отрабатывать на всех страницах вашего сайта.

1: <p class=»code»> 2: @Html.Action(«sapecode», «home») 3: </p>

Вот, собственно говоря и всё. Пробуйте, у меня получилось, чего и вам желаю.

Подробнее: http://feedproxy.google.com/~r/blogmusor/~3/ZdOOEXiweso/91

Источник: lred.ru

Оцените статью
новости для мужчин