スタンドアロンのASP.NETとSharePointの両方で使用される一連のコードがあります。 SharePointが存在するかどうかを検出するために、CSファイルに条件付きコードを記述する正当な方法があるかどうか疑問に思っていますか?SharePointでASCX/ASPXが実行されているかどうかを検出しますか?
OnPreInitで実行できる必要があります。この決定に基づいて、MasterPageFile属性を切り替えるので、ページライフサイクルの早い段階で行う必要があります。
"〜/ layouts"ディレクトリなどの存在を確認するようなことができますが、これを行うにはより良い方法が必要です。さらに、互換性の理由(イメージの場所など)については、実際にはASP.NETのスタンドアロンモードでSharePointディレクトリ構造を採用する可能性があります。
スタンドアロンで実行しているときにほとんど使用されなくても、Microsoft.SharePoint.DLLは必要です。
ありがとうございます!
残念ながら、私はこれを試して、実際にSharePointがインストールされていないマシンでクラッシュします。 DLLを参照するのは大丈夫ですが、SP自体が存在しない場合は動作する必要があります。 –
はここに興味がある人のためのスタックトレースです - [とNullReferenceException:オブジェクト参照オブジェクトのインスタンスに設定されていません。] Microsoft.SharePoint.Utilities.SPUtility.AlternateServerUrlFromHttpRequestUrl(ウリURL)+27 Microsoft.SharePoint.Administration。 SPAlternateUrl.get_ContextUri()+135 Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(のHttpContextコンテキスト)237 Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(のHttpContextコンテキスト)25 Microsoft.SharePoint.SPContext.get_Current()+ 107 –
上記の例外がSPContext.Currentにアクセスしたときにスローされた場合、上記の2番目の方法が有効です。しかし、以下のNatのソリューションはアーキテクチャ上の観点からは優れています。 –