locked
追加したソリューションとサイトの機能について RRS feed

  • 質問

  • 自作したソリューションを、SharePoint 2010 の [サーバーの全体管理]→[システム設定]→[ファームソリューションの管理]に追加しました。
    そして、テストサイト上の [サイトの操作]→[サイトの操作]→[サイト機能の管理]から、追加したソリューションの機能をアクティブ化しました。

    自作したプログラムは、単に対象のドキュメントライブラリにファイルが追加されたら、カウントしていくだけの機能です。

    ここで、プログラムを置き換えようと思ったところ、以下のような現象が発生しました。
    1.正しい操作
     [サイトの操作]→[サイトの操作]→[サイト機能の管理]→非アクティブ化
     [サーバーの全体管理]→[システム設定]→[ファームソリューションの管理]→[ソリューションの取り消し]と削除
     プログラムを更新する
     [SharePoint 2010 管理シェル]→[add-spsolution]を実行→[サーバーの全体管理]→[システム設定]→[ファームソリューションの管理]→[ソリューションの展開]
     [サイトの操作]→[サイトの操作]→[サイト機能の管理]→アクティブ化
     ※正しい動作(カウントが1ずつ増えていく)

    2.間違った動作
     1.正しい動作の
     [サイトの操作]→[サイトの操作]→[サイト機能の管理]→非アクティブ化
     を実行し忘れ、アクティブ化のままソリューションを削除→追加
     ※おかしな動作(カウントが2ずつ増えていく)

    質問は、2の動作を行った場合、どうやらサイトから機能が消えずに2重に動いてしまっているような印象です。
    しかし、[サイトの操作]→[サイトの操作]→[サイト機能の管理]を見ても1つしかなく、非アクティブにすると1つずつカウントされるため、見えないところでもう一つ動いているとしか思えない状況です。
    これを正常な状態に戻すには、どうすればよいのでしょうか?
    表面上見えていない機能を見つけて消せばよいと思うのですが、その方法がわからず四苦八苦しています。

    どなたか、アドバイスいただけると幸いです。
    よろしくお願いします。
    2012年9月7日 2:58

回答

  • 自作のプログラムはイベントレシーバという事で宜しいですか?

    ご認識通り、deactivateをせずにソリューションを取り消しした場合、イベントレシーバが残ってしまう事があり、まさにその現象が発生していると考えられます。

    正常な状態に戻す方法ですが、新しくライブラリを作成した方が良いと思いますが、SPListにそのものずばり、EventReceiversというプロパティがあるので、プログラム(もしくはPowershellのスクリプト)から、このプロパティを回して対象のイベントレシーバを削除すれば、元の状態に戻せると思います。

    • 回答としてマーク 豚肉定食 2012年9月18日 0:11
    2012年9月13日 15:20

すべての返信

  • 自作のプログラムはイベントレシーバという事で宜しいですか?

    ご認識通り、deactivateをせずにソリューションを取り消しした場合、イベントレシーバが残ってしまう事があり、まさにその現象が発生していると考えられます。

    正常な状態に戻す方法ですが、新しくライブラリを作成した方が良いと思いますが、SPListにそのものずばり、EventReceiversというプロパティがあるので、プログラム(もしくはPowershellのスクリプト)から、このプロパティを回して対象のイベントレシーバを削除すれば、元の状態に戻せると思います。

    • 回答としてマーク 豚肉定食 2012年9月18日 0:11
    2012年9月13日 15:20
  • 貴重なアドバイスをいただき、ありがとうございました。

    おっしゃるとおり、イベントレシーバです。
    確かにライブラリの作り直しが確実な方法かと思いましたが、本番に乗っかってしまった後はそうもいえず、今のうちから対応策を探しておりました。

    アドバイス通り、EventReceiversというプロパティを調べたところ、同じ機能が2つ出てきました。
    これを消すことで正しく動くようになりました。

    非常に助かりました。
    ありがとうございます。
    2012年9月18日 0:12