2012年3月

2012年3月15日 (木)

SharePoint 2010 で利用できるようになった「サンドボックス ソリューションとして展開できるWebパーツ」ですが、開発中に色々と注意しないといけないことがあります。

ソリューション開発時のチェックリスト

ソリューションを展開する前に確認しておきたい項目は次のとおりです。

*.cs ファイル

名前空間と型名(クラス名)が正しいかを確認する

*.webpart ファイル

metadataq セクションで指定する type 要素には、正しい方が指定されていること。これが間違っていると、Webパーツを配置しようとしても、エラーが表示され追加できない。

*.spdata ファイル

ファーム ソリューションの場合にはIIS側の SharePoint ルート仮想ディレクトリ内のWeb.configに SafeControl エントリーを追加されますが、サンドボックス ソリューションではWeb.config には直接追加されません。しかし、開発時には隠しファイル内にSafeContolエントリーを記述するようになっています。

Visual Studio 2010 のソリューション エクスプローラーで[すべてのファイルを表示]をクリックすると、Webパーツのフォルダー内には隠しファイルとして *.spdata が生成されており (これは分かりにくい!!) 、この中に SafeControl エントリーが記載されています。*.cs 内の名前空間変更時には併せてこちらも確認しておきましょう (特に Namespace) 。

Spdata

たとえば *.spdata ファイル内の記述が正しくないと次のようにWebパーツに表示されてしまいます。

「Web パーツ エラー: 部分的に信頼されているアプリケーション ドメインで、セキュリティで保護されたコード ラッパーの実行メソッドから未処理の例外がスローされました: この種類は安全なコントロールとして登録されていません。

SPUserCodeSolutionExecutionFailedException: 部分的に信頼されているアプリケーション ドメインで、セキュリティで保護されたコード ラッパーの実行メソッドから未処理の例外がスローされました: この種類は安全なコントロールとして登録されていません。... (以下、略) ]

[参考] http://www.alexbruett.net/?p=261

2012年3月14日 (水)

仮想環境にて開発&検証用にLync Server 2010 を構築していますが、"Lync Server フロント エンド" サービスが開始できなくなり、どのユーザーもサインインできなくなりました。

現象とトラブル解決方法を備忘録として共有しておきます。

現象

Lync 2010クライアントからサインインできなくなったため、原因を探ると "Lync Server フロントエンド" サービスが開始されていないことが分かりました。これを無理に開始しようとすると次のエラーが表示されます。

「ローカル コンピュータで Lync Server フロントエンドを開始できませんでした。詳細情報はシステム イベント ログを参考にしてください。これが Microsoft 以外のサービスである場合は、サービスの製造元に問い合わせてください。その際、サービス固有のエラー コードが - 1008193023 であることを伝えてください」

解決方法

Lync Server 上で次のコマンドを実行する。

>ServerManagerCmd -i MSMQ-Services

コマンド実行後しばらくするとサービスが無事に再開されました。

どうもこれ、下記のリンクの内容が関わっているようです。

http://blog.tiensivu.com/aaron/archives/1867-RtcQmsAgent-fails-to-start-on-OCS-2007-R2-server-and-causes-KB-967831-April-2009-update-for-Front-End-Server-components-install-to-fail.html

解決方法を見つけたサイトは↓です(中国語ですけど)。

http://chandler-bin.blogspot.com/2011/07/lync-server-2010-front-end-service-not.html

同じようなトラブルに遭われることがあれば、お役に立てれば幸いです。

 

2012年3月13日 (火)

たまにはSharePoint サイトの「ちょこっとカスタマイズ」をご紹介しましょう。これは Office 365 でも利用できます。

SharePoint 2010 では 「ドキュメント センター」 サイトテンプレートを使ってサイトを作成するとトップページにファイルのアップロードボタンが表示されます。このボタンはコンテンツ エディタWebパーツで作られています。

これを応用すれば好きなサイト上のページにアップロードボタンを配置し、たとえば特定のライブラリの特定のフォルダーに直接ファイルをアップロードできるようカスタマイズできます。

例) 弊社のテキスト管理サイト

File Upload Button 01

[テキストのアップロード(SP2010)]ボタンをクリックすると、次のように表示されます。任意のフォルダーをあらかじめ指定した状態でアップロードできるようになります。

File Upload Button 05

ボタンの作成方法は次の通りです。

  1. ボタンを配置したいサイトにアクセスします。
  2. [サイトの操作]メニューから[ページの編集]をクリックします。
  3. コンテンツ エディターWebパーツを配置します。
  4. Webパーツの右上の▼をクリックし、[Webパーツの編集]をクリックします。
    File Upload Button 02
  5. コンテンツ エディターWebパーツの入力エリア内にカーソルを挿入します。
    File Upload Button 03
  6. リボンメニューで [テキストの書式設定]タブを表示し、右上に表示される[マークアップ]グループにある [HTMLで編集]をクリックします。
    File Upload Button 04
  7. 次のようにコードを記述します(例: サイトに Documents というURLを持つライブラリがある例です。任意のライブラリのURLを指定しましょう)。

    <div> <button 
    onclick="javascript:OpenNewFormUrl(&#39;Documents/Forms/upload.aspx?
    RootFolder= %2FTrainingContents%2FDocuments%2FSharePoint%202010&#39;); 
    return false;" type="submit"> <nobr>
    <img alt="ドキュメントのアップロード" 
     src="/_layouts/Images/uploaddoc.png"/>
    & #160;<span>テキストのアップロード(SP2010)</span>
    </nobr></button> </div>
  8. [OK]ボタンをクリックします。
  9. Webパーツのプロパティが表示されていたら[OK]をクリックします。
  10. Webページを保存し、編集を終了します。

コンテンツ エディタ Web パーツに追加する button タグ内にはボタンクリック時に実行される JavaScript を記載します。利用する JavaScript 関数は OpenNewFormUrlです。引数には利用したいライブラリのURLを記述します。URLは相対パスで構いません。

構文1 : OpenNewFormUrl("<ライブラリのURL>/Forms/upload.aspx")

この時、uplaod.aspx にフォルダーまでのパスをクエリ文字列として渡してやることで、特定のフォルダーが指定されたアップロード画面が表示されるようになります。

構文2 : OpenNewFormUrl("<ライブラリのURL>/Forms/upload.aspx?<フォルダーまでのパス>")

最後のspanタグ内にはボタンに表示したいラベルを記述します。

以上、ユーザーに特定のライブラリに手軽にファイルをアップロードしてもらいたい場合などに利用してみてください。