SharePoint 2007 での ASP.Net 3.5 SP1 ルーティングの使用
-
02-07-2019 - |
質問
SharePoint Web サイトにフレンドリ URL をいくつか設定しようとしています。RewritePath を使用して ASP.Net 2.0 フレンドリーな URL を実行できることはわかっていますが、ASP.NET 3.5 SP1 に付属する System.Web.Routing を利用できるかどうか疑問に思っていました。
ルート テーブルをロードする方法は理解できたと思いますが、適切な IHttpHandler を渡すためにどのメソッドを使用すればよいかがわかりません。
ありがとう!
解決
結局、私はライアンが持っていたものを手に入れました。
var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);
public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
//rewrite to some know sharepoint path
HttpContext.Current.RewritePath("~/Pages/Default.aspx");
// return some HTTP handler here
return new DefaultHttpHandler();
}}
それは私にとってはうまくいくようです。
他のヒント
私は、Share Point の評価プロセスの一環としてこれを調査するように依頼されました。
私の理解では、 URIテンプレート 基本的にはホスト名の後に再帰的なフォルダー構造が続きます。
これは、Share Point が URI を 255 文字で切り捨てるため、さらに複雑になります。したがって、フォルダー構造が特に深く、または冗長である場合、URI が無効になる可能性があります。
私は、人間が判読できる規則に従い、Share Point 規則に変換することによって、基本的に URI を整形/整理することを考えていました。つまり:
http://myhostname.com/docs/human-resources/case-files/2009/reviews/ed-blackburn.docx
シェアポイントに変換:
http://myhostname.com/human%20resources/case%20files/2009/reviews/ed%20blackburn.docx
追加の必要なサービスは、コントローラーによって制御できます。
255 文字を超える場合は、何らかの tinyurl アプローチが最初の提案になります。
以下のように簡単になるはずです。
var route = new Route("blah/{*path}", new MyRouteHandler());
RouteTable.Routes.Add(route);
public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// return some HTTP handler here
}
}
次に、web.config の HTTP モジュールの下に System.Web.Routing.UrlRoutingModule を登録すれば準備完了です。
<add name="Routing" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>