機能を開発するときに、SharePoint 2007 サイトの Application_Start にフックする良い方法があるかどうか疑問に思っていました。サイト ルートにある Global.asax ファイルを直接編集できることはわかっていますが、この機能と共に展開されるようにする方法はありますか?
ありがとう!
機能を開発するときに、SharePoint 2007 サイトの Application_Start にフックする良い方法があるかどうか疑問に思っていました。サイト ルートにある Global.asax ファイルを直接編集できることはわかっていますが、この機能と共に展開されるようにする方法はありますか?
ありがとう!
これは実際には可能ですが、Global.asaxファイルは含まれません。
Microsoftの例の多くは、Global.asaxを介した配線コードを示していますが、SharePointに関しては、これはベストプラクティスのアプローチではありません。理想的には、コードを機能としてパッケージ化し、WSPを介してデプロイする必要があります(すでにご存知のとおり)。
重要なのは、問題のコードをHttpModule(つまり、IHttpModuleインターフェイスを実装するタイプ)として実装し、SharePointアプリケーションにサービスを提供するASP.NETパイプラインに接続することです。大まかに言えば、次の手順です。
HttpModule開発の詳細については、 http://msdn.microsoft.com/en-us/library/ms227673.aspxを参照してください。SPWebConfigModificationタイプの詳細については、 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspxを参照してください。
結果:アプリケーションの起動を処理でき、Featureを介してデプロイ可能なクラス。手動でファイルをハッキングする必要はありません。
私はこれを多くのシナリオでうまく使用しました-最近では、起動時にSPHttpApplicationでコールバックを登録する必要があるカスタムキャッシュプロバイダー(IVaryByCustomHandler)を使用しました。
あなたの質問は少し古いですが、これがお役に立てば幸いです。
これについての私の直感は、それが不可能になるだろうということです。Application_Startは、asp.netエンジンの起動時にランタイムによって呼び出されるため、Global.asaxを変更する以外にハンドラーをフックする方法はほとんどありません。たとえば、フックは宣言型で永続的である必要があります。アプリケーションの停止/アンロード後も存続します。したがって、global.asaxに書き込む必要がある場合は、変更を実行するためにFeatureEventReceiverを作成できると思います。
それはさておき、その理由について詳しく教えていただけますか?おそらく他の迎え角があります。その場でglobal.asaxを変更するという考えは、私を気分が悪くさせます。それは良いことではありません。
オシーン