SharePoint Web サイトでわかりやすい URL を設定しようとしています。RewritePath を使用して ASP.Net 2.0 に適した URL を作成できることはわかっていますが、ASP.NET 3.5 SP1 に付属する System.Web.Routing を使用できるかどうか疑問に思っていました。
ルート テーブルをロードする方法は理解できたと思いますが、正しい IHttpHandler を渡すためにどの方法を使用すればよいかわかりません。
ありがとう!
SharePoint Web サイトでわかりやすい URL を設定しようとしています。RewritePath を使用して ASP.Net 2.0 に適した URL を作成できることはわかっていますが、ASP.NET 3.5 SP1 に付属する System.Web.Routing を使用できるかどうか疑問に思っていました。
ルート テーブルをロードする方法は理解できたと思いますが、正しい IHttpHandler を渡すためにどの方法を使用すればよいかわかりません。
ありがとう!
私は、Share Point の評価プロセスの一環として、これを調べるように依頼されました。
私の理解では、uri テンプレートは基本的にホスト名であり、その後に再帰的なフォルダー構造が続きます。
これは、Share Point が uri を 255 文字で切り捨てるため、さらに複雑になります。したがって、フォルダー構造が特に深いか冗長である場合、uri が無効になる可能性があります。
私は本質的に、人間が読める規則に従って uri をきれいにする/整理し、Share Point 規則に変換することを考えていました。すなわち:
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)
{
//rewrite to some know sharepoint path
HttpContext.Current.RewritePath("~/Pages/Default.aspx");
// return some HTTP handler here
return new DefaultHttpHandler();
}}
それは私にとってはうまくいくようです。
以下のように簡単なはずです。
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"/>