絶対URLからSPListを取得する

絶対URLからSPListを取得する方法です。 結論から言うと、SPListはhttp://から始まる絶対URLで取得することができません。 SPListはホスト名からの相対URLで取得します。管理パスとかサブサイトとかで階層がどんなに深くなっていても、ホスト名からの相対URLを指定します。 従って、以下のコードのように何らかのやり方でホスト名までの部分を削除し、その値をSPWebのGetListメソッドに渡します。

1: Uri uri = new Uri("http://test.co.jp/test/Lists/List1/DispForm.aspx?ID=1");
2: SPSite site = new SPSite(uri.AbsoluteUri);
3: SPWeb web = site.OpenWeb();
4: string targetUrl = uri.AbsoluteUrl.Replace(string.Format("{0}{1}", uri.GetLeftPart(UriPartial.Scheme), uri.Host), "");
5: SPList list = web.GetList(targetUrl);

これで問題なさそうですが、SPWeb.GetListメソッドは一つだけ注意点があります。 SPWeb.GetListメソッドは、引数として渡されたURLのファイル名の部分まで意味を持ちます。 例えば、リスト名までは合っていてもファイル名の部分に間違いがあると、SPListを取得することができません。 以下のコードは、DispForm.aspxがDisp.aspxと間違えているため、SPListは取得できません。

読了時間: 1分

絶対URLからSPWebを取得する

絶対URLからSPWebを取得する方法です。 SPWebを取得するには、まずSPSiteを取得する必要があります。 SPSiteの取得は、別の記事にも書いた通り、SPSiteのコンストラクタの引数に、絶対URLを渡して取得します。 その後、続けてOpenWebメソッドを引数なしで呼び出すことで、SPWebを取得できます。 以下のコードでは、testというサブサイトを指定しています。 このコードの結果は、testサブサイトが取得できます。

1: SPSite site = new SPSite("http://test.co.jp/test/Lists/List1/DispForm.aspx?ID=1");
2: SPWeb web = site.OpenWeb();

SPSiteと同様、サイトが特定できれば、後半のURLは存在しないコンテンツを指していても問題ありません。 以下のコードでは、test2という存在しないサブサイトを指しています。 このコードの結果は、http://test.co.jpのトップサイトが取得できます。

読了時間: 1分

絶対URLからSPSiteを取得する

絶対URLからSPSiteを取得する方法です。 SPSiteのコンストラクタの引数に、絶対URLを渡すとSPSiteが取得できます。

1: SPSite site = new SPSite(http://test.co.jp/test/Lists/List1/DispForm.aspx?ID=1);

管理パスを定義している場合は、SharePointが自動的に管理パスかどうかを判断し、適切なSPSiteを返してくれます。 例えば、http://test.co.jp直下のサイトコレクションの下位にtest1という管理パスを定義し、そこにサイトコレクションを作成した場合、以下のコードではtest1のサイトコレクションを取得します。

1: SPSite site = new SPSite("http://test.co.jp/test1/Lists/List1/DispForm.aspx?ID=1");

サイトコレクションが特定できれば、後半のURLは存在しないコンテンツを指していても問題ありません。 以下のコードでは、test2という存在しないサブサイトを指しています。 このコードの結果は、http://test.co.jpのサイトコレクションが取得できます。

1: SPSite site = new SPSite("http://test.co.jp/test2/Lists/List1/DispForm.aspx?ID=1");

指定の絶対URLでSPSiteが取得できない場合、FileNotFoundExceptionが発生します。

読了時間: 1分

修正モジュールのインストール手順

修正モジュールのインストール手順に関するドキュメントです。 手順だけではなく、本家TechCenterにある修正モジュール一覧と同じような情報も載っています。 Windows SharePoint Services 3.0 用のソフトウェア更新プログラムを展開する http://technet.microsoft.com/ja-jp/library/cc288269.aspx Office SharePoint Server 2007 のソフトウェア更新プログラムを展開する http://technet.microsoft.com/ja-jp/library/cc263467.aspx

読了時間: 1分

Tech Ed 2009 BoFのまとめ資料公開

Tech Ed 2009 で、北端さん、山崎さんとご一緒させていただいたBoFのディスカッション結果をまとめた資料が、山崎さんが代表を務めるオフィスアイ社のサイトで公開されました。 http://www.office-i-corp.jp/events/teched09_bof.htm もうすでにご覧になっている方が多いかと思いますが、私からもご紹介させていただきました。 山崎さんの所感も含め、SharePointを企画・運用されている方々は、ぜひご一読ください。 最後になりましたが、お忙しい中、BoFに足を運んでくださった参加者の皆様、ご参加いただきありがとうございました。 今後も、みなさんでSharePointを活用し、盛り上げていきましょう!​

読了時間: 1分

旧サイトのコンテンツを徐々に移行します

旧サイトのコンテンツですが、そのまま前のサイトに置いておいてもいいのですが検索機能が使えないので、新サイトに順次移行しようと思っています。 旧サイトには約100件の投稿があるのですが、使えそうなものだけを選んで新サイトのリファレンスに移します。 ただし、数が多いので気が向いたときにゆっくり移行していくつもりです。 旧サイトは、コンテンツ移行後もこれまでにいただいた貴重なコメントと共に、今後も残しておきたいと思います。​

読了時間: 1分

コメント登録を受け付けるようにしました

まだコメントスパム対策は完成していないのですが、貴重なご意見をいただく機会が全くないのももったいないので、思い切ってコメント登録を受け付けるようにしました。 みなさま、色々とご意見ください。 よろしくお願いします。​

読了時間: 1分

Tech Ed 2009 無事終了

Tech Ed、今年も無事に終わりました!! 今回は、前回のBoFとは全く違う形で進めさせていただきましたが、ご参加くださった方々はいかがでしたか? 私は、普段色々な方々とSharePointについてお話しさせていただいておりますが、今回のBoFではこれまで聞いたことがないような興味深いお話が聞けて、とても参考になりました。 私だけでなく、お越しいただいた方々全員が何かしら得るものがあったのではないかと思いますし、そうであることを願います。 山崎さんがおっしゃっておりましたが、今回のディスカッション内容がまとまったら共有させていただきますね。 Tech Ed の場だけでなく、色々な形で今後もみなさんと交流を深めていくことができたらいいなぁと思います。 また機会があれば、楽しくディスカッションしましょう!!

読了時間: 1分

SharePoint API で web.config を変更する

SharePoint API には、web.configを変更するためのクラスが用意されています。 このクラスを使うことで、たとえばFeatureのインストール時に自動的にweb.configを変更するということができるようになります。 web.configの変更には、SPWebConfigModificationクラスとSPWebServiceクラスを利用します。 例として、web.config内のappSettingsに値を追加する処理を書いてみます。 **1.変更内容をSPWebConfigModificationクラスにセットする。**SPWebConfigModificationクラスは、web.configに加える変更情報を保持するクラスです。 web.configを変更したい場合には、このクラスに変更内容をセットすることになります。

1: SPWebConfigModification appSetting = new SPWebConfigModification();
2: appSetting.Path = "configuration/appSettings";
3: appSetting.Name = "add[@key='NewKey']";
4: appSetting.Owner = "orivers";
5: appSetting.Sequence = 0;
6: appSetting.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
7: appSetting.Value = "<add key='NewKey' value='NewValue'/>";

  各プロパティの詳細はヘルプを見ていただくとして、ここでは簡単に説明します。 Pathプロパティに変更対象となるノードを指定し、Valueプロパティに変更内容を指定します。 Nameプロパティは、この変更を一意に識別するための値です。 Ownerプロパティも、Nameプロパティと合わせて、変更を一意に識別するために使用します。 Typeプロパティは、変更内容に合わせたタイプを指定します。 **2.変更を実行する。**SPWebConfigModificationクラスの作成が完了したら、web.configのアップデートをしたいWebアプリケーションで変更を実行します。

読了時間: 1分

msdn subscription にて Windows 7 配信開始!

ついにWindows7のRTM版がmsdn subscriptionでダウンロードできるようになりました。 Windows7は、SharePointを動作させることができるとのことなので、Windows7のインストールが完了したら、真っ先に試してみようと思います。​

読了時間: 1分