пятница, 10 апреля 2009 г.

Редирект в SharePoint

Появилась задача перенаправлять обращения по некоторым URL в SharePoint'е на другие URL в нем же. Оказывается люди такое уже делают.

Получилось и у меня:

Делаю редирект с урла вида
 http://server/TestRedirectionSharePoint/ 

на
 http://server/NewRedirectionSite/ 




using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using Microsoft.SharePoint;

namespace SP2007RedirectExample
{
public class RedirectModule : IHttpModule
{
public void Dispose()
{ }

public void Init(HttpApplication context)
{
context.BeginRequest +=
new EventHandler(context_BeginRequest);
}

void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
string requestUrl = app.Request.Url.ToString();

if (requestUrl.Contains("TestRedirectionSharePoint"))
{
var destinationUrl = requestUrl.Replace("TestRedirectionSharePoint", "NewRedirectionSite");
app.Response.AddHeader("Location", destinationUrl);
app.Response.StatusCode = 301;
}
}
}
}


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

Комментариев нет: