Previous month:
2014年5 月
Next month:
2014年8 月

2014年6 月 からの 7 記事

[SharePoint 2013] Lync 2013 連携行き先掲示板Webパーツ ソリューション開発

Lync 2013 と連携して動作する 「SharePoint 2013 対応の行き先掲示板 Web パーツ」について、弊社サイトで情報公開しております。Office 365 とも連携できる手軽なソリューションです。

Lync2013DestinationBoard

ご興味のある方はお問い合わせください。

以上、ご参考まで。


[SharePoint 2013] JSLinkの「ダウンロード最小化戦略対応」

SharePoint 2013 からリストの表示に関するカスタマイズは、従来の SharePoint Designer と データビュー Webパーツを使った XSLTベースのカスタマイズ以外に、JSLink と呼ばれる JavaScript ベースのカスタマイズが可能になっています。

これを利用する際に、サイトのフィーチャーである「ダウンロード最小化戦略」対応を考慮する必要があります。以前の記事では、相性が悪いのでこのフィーチャーを非アクティブ化する方がよいという記載をしました。

[以前の記事] ダウンロード最小化戦略 (Minimal download Strategy)

しかし、RegisterModuleInit メソッドを利用することで、このフィーチャーにも対応が可能です。詳しくは下記 MSDN 記事に記載がありましたので、共有しておきます。

***************************************************************

[関連情報]

9月以降に実施する、弊社オリジナル研修コースである「Microsoft SharePoint Server 2013 ソリューション開発基礎」も内容を若干改訂し、JSLink の基本的な利用方法についても演習を交えて解説します。

 


カスタム タイマージョブ展開時の注意事項

カスタム タイマージョブ開発を行う場合の、SharePoint 2010 および 2013 共通の注意事項について記載しておきます。

カスタム タイマージョブの登録は、サイト コレクションなどのフィーチャーの Activated イベントなどを使って行いますが、当該フィーチャーを非アクティブ化した後で再びアクティブ化しようすとるとエラーが発生してアクティブ化できなくなることがあります。

ULSログを確認すると、次のような「アクセスが拒否されました」というエラー情報のエントリーが確認できます。

2014-06-26 17-38-56

この事象については、マイクロソフト社の KB に情報が公開されていますので詳細は下記を確認してください。

SharePoint 2010 から導入された新しいセキュリティ機能の影響で、Microsoft.SharePoint.Administration 名前空間内の SPPersistedObject から派生したオブジェクトへのあらゆる変更はブロックされ、コンテンツを保持するWebアプリケーション側から構成データベースを更新することは許可されないようになっています。この新しい機能は、SPWebServie.RemoteAdministratorAccessDenied プロパティで制御されています。

そのため、こうしたエラーが発生した場合は、必要に応じてWindows PowerShell などを使って、このプロパティ値を false に変更し、IISReset を行います。

[SharePoint管理シェルの例]


#RemoteAdministratorAccessDenied プロパティを確認する
>$contentService=[Microsoft.SharePoint.Administration.SPWebService]::ContentService
>$contentService.RemoteAdministratorAccessDenied
#この機能をオフにする
>$contentService.RemoteAdministratorAccessDenied=$false
>$contentService.Update()
>IISRESET


[SharePoint 2013] Health Analyzer で検出される MissingSetupFile への対応

昨日の記事では、Health Analyzer で検出される「サーバー側の依存関係がありません」というエラー内の、MissingWebPart に対する対処方法の一つをご紹介しました。

今回は関連する内容としてWebパーツ開発時に起こりがちな「サーバー側の依存関係がありません」というエラー内に表示される MissingSetupFile への対応方法の一つをご紹介します。

この問題は次のように検出されます。

2014-06-12 12-34-09

ユーザーがWebパーツを利用するためには、サイト コレクション内のWebパーツギャラリーに *.webpart ファイルが必要であり、Visual Studio 2012 または 2013 の Office Developer Tools を使うとこのファイルを自動生成してくれます。しかし、ソリューションアンインストール時にこうした情報が削除されないことがあります。これにより、上記のメッセージが表示されます。どのサイトにこのファイルが残っているかを確認するには、これもSQL Serverにアクセスし、次のSQLクエリを実行します。

SELECT * FROM AllDocs WHERE SetupPath='セットアップファイルパス'

2014-06-12 12-33-40

SQLクエリの実行結果内の DirName をたどれば、目的のサイトのURLがわかります。このWebパーツギャラリーから*.webpart ファイルを手動で削除します。この時も必ずサイト コレクションのごみ箱から完全に削除するようにします。

[関連情報]

弊社オリジナルコースである「Microsoft SharePoint Server 2013 ソリューション開発基礎」にて、Webパーツ開発の基本手法をご案内しています。

 


[SharePoint 2013] Health Analyzer で検出される MissingWebPart への対応

サーバー全体管理サイトの [問題とソリューション確認] ページで、 Health Anaylzerが サーバー側の依存関係がありません というエラー情報を出すことがあります。特に、Visual Studio を使ったSharePoint ソリューション開発をしている環境などではよくあります。

2014-06-12 10-30-55

内容を確認すると次のようなメッセージが表示されます。

2014-06-12 11-39-35

この中に [MissingWebPart] というセクションがありますが、Visual Studio ではソリューションの取り消しを行っているものの、Webパーツを追加してテストしたページが残ったままになっている際などに、このメッセージが表示されます。しかし、肝心のどのページに配置したのかは、このメッセージからは推測できません。

解決方法としては、SQL サーバー上の当該コンテンツDBに対して次のようなSQLクエリを実行することです。これにより、どのページに配置していたかがわかります。

select d.DirName, d.LeafName, * from AllWebParts wp join AllDocs d on wp.tp_PageUrlID = d.Id where tp_WebPartTypeId = 'WebパーツクラスのID'

2014-06-12 11-57-21

なお、テストページの場合は削除してしまえば、このメッセージは表示されなくなりますが、削除は必ずサイト コレクションのごみ箱からの削除を行わないといけません。ページを削除後、上記のクエリを再度実行し、エントリーが表示されないことを確認します。

[参考]

http://social.technet.microsoft.com/Forums/sharepoint/ja-JP/484c138d-0ca4-486c-9602-8e4767878671/sharepoint-configuration-missingwebpart-webpart-class-xxx-is-referenced-6-times-in-the