Создание сервера пересылки запросов HTTP для внешних приложений
В этом разделе описывается, как создать запрос для перенаправления обработчика запросов HTTP.
Дата последнего изменения: 13 января 2010 г.
Применимо к: SharePoint Foundation 2010
Некоторые приложения, например Silverlight, не поддерживают междоменные запросы. Для взаимодействия таких приложений с сервером в другом домене запросы сначала отправляются в обработчик пересылки запросов, который находится в одном домене с приложением. Этот обработчик повторно упаковывает запросы и передает их на соответствующий целевой объект внешнего домена.
Например, если в веб-части Silverlight размещается приложение Silverlight из домена, отличного от домена веб-приложения SharePoint Foundation, на странице которого содержится веб-часть, а также в тех случаях, когда в приложении требуется передача запросов в веб-приложение, необходимо создать обработчик пересылки запросов и установить его в домене приложения Silverlight. Для определения URL-адреса обработчика используется XML-файл внешнего приложения при добавлении веб-части на страницу. Дополнительные сведения о создании этого XML см. в статье Практическое руководство. Создание разметки XML внешнего приложения.
Основная часть логики, используемой обработчиком, реализуется в классе RequestForwarder. Создаваемый класс обработчика представляет собой оболочку этого класса.
Создание обработчика пересылки запросов
Добавьте обычный текстовый файл в проект Visual Studio и присвойте ему расширение ASHX.
Добавьте директиву WebHandler в верхнюю часть страницы. Используйте атрибуты Language и Class для определения языка программирования и класса, реализующего обработчик. Далее представлен пример.
<%@ WebHandler Language="C#" Class="ToSharePointForwarder" %>
Ниже этой директивы добавьте код так же, как в обычном файле кода. Для начала добавьте инструкции using, в том числе инструкцию для пространства имен Microsoft.SharePoint.Client.
using System; using System.Web; using Microsoft.SharePoint.Client;
Imports System Imports System.Web Imports Microsoft.SharePoint.Client
Добавьте объявление класса обработчика. Поскольку создается обработчик HTTP, в нем необходимо реализовать интерфейс IHttpHandler.
public class ToSharePointForwarder : IHttpHandler { }
Public Class ToSharePointForwarder Implements IHttpHandler End Class
Добавьте реализацию свойства IsReusable. Оно должно возвращать значение false.
public bool IsReusable { get { return false; } }
Public ReadOnly Property IsReusable() As Boolean Get Return False End Get End Property
Добавьте реализацию метода ProcessRequest(HttpContext). Для большинства частей эта реализация представляет собой оболочку метода ProcessRequest() класса RequestForwarder. Обратите внимание, что сначала в запрос необходимо добавить учетные данные участника приложения. В этом примере объект NetworkCredential создается на основе имени и пароля пользователя участника приложения и домена Active Directory этого пользователя.
public void ProcessRequest (HttpContext context) { RequestForwarder forwarder = new RequestForwarder(context); if (!String.IsNullOrEmpty(forwarder.Url)) { forwarder.WebRequest.Credentials = new System.Net.NetworkCredential("ContosoSilverlightApp", "&Tu*)2v", "Contoso"); forwarder.ProcessRequest(); } }
Public Sub ProcessRequest(ByVal context As HttpContext) Dim forwarder As New RequestForwarder(context) If Not String.IsNullOrEmpty(forwarder.Url) Then forwarder.WebRequest.Credentials = New System.Net.NetworkCredential("ContosoSilverlightApp", "&Tu*)2v", "Contoso") forwarder.ProcessRequest() End If End Sub