2012-01-04 11 views
3

私は以下のコードを使用してsharepointからWebアプリケーションにアクセスしています。SharePoint:SharePoint Foundation 2010でSPContext.CurrentがNULLを返す

SPWebApplication webApplication = SPContext.Current.Site.WebApplication; 

それは、SharePoint Server 2010の(MOSS2010)で正常に動作します。しかし、私はSharePoint Foundation 2010(WSS4.0)を使用してSPContext.Current常にnullを返します。誰が私にこれの理由が何かを教えてもらえますか?どうすればこの問題を解決できますか?

おかげに関して、 SharmilaあなたはSP2010 Serverマシン上でそれを構築した後、財団のマシンにコードを展開しなかった、あなたのコードを構築し

+0

を私のブログの記事を見てみたい場合はこちらをご覧くださいあなたは 'SPContextよろしいです。現在は 'ヌル'ですか?このコードはどこで実行されますか(WebPart/Console Application/TimerJob)? – Stefan

+0

Yes.SPContext.Currentはnullを返します。コードはwebpartで実行されます – Mishal

+0

これはサンドボックスソリューションですか(Foundation環境内)? –

答えて

4

SPContextがヌルであるとわかっている一般的な理由の1つは、誤って設定されたAAMがある場合です。あなたのURLが登録されていない場合、そのURLがSPContextの内側にあるかどうかを知ることができないため、Sharepointはあなたのサイトに設定されているURLを分かります。

最も一般的な変更点は、IISサイトの のホストヘッダーを変更することです。これは巨大なノーではありません。これを絶対にしないでください(代わりに AAMを使用してください)。もしあなたが先に進んで、あなたの新たに追加されたヘッダのどれかを変更すれば、部分的にしか機能しません。 SharePoint の内部には、URLに直接依存する多くのコンポーネントがあり、特にこのURLを内部的に調べると にあります。 デベロッパーの場合は、 SharePointのメリットであるSPContext.Currentへの参照は機能しません。これにより、ランダムに、 SharePointページ、Webパーツ、カスタムフィーチャーが混乱します。

あなたは、セットアップのAAMする方法を知っている(と彼らは非常に重要である理由を見つける)被写体に http://blog.staticvoid.co.nz/2011/05/sharepoint-alternate-access-mappings.html

0

?もしあなたがそうしたのであれば、基盤サーバー上のコードを再構築する必要があると思われます。

+4

'SPContext'オブジェクトは、Microsoft.SharePoint.dllアセンブリに含まれるコアコンセプトです。これは、FoundationサーバーとOfficeサーバーの両方で一般的です。 – naivists

+0

Foundation 2010(wss4.0)でコードを個別にコンパイルしましたが、SPContext.Currentはnullです。ただし、SPContext.Currentはsitecollectionで使用できます。 Webアプリケーション用にWebパーツがデプロイされている場合はnullです。 – Mishal

+0

こんにちは、私はSPContext.Currentは、他の場所からWebアプリケーションにアクセスしようとするとreciever.HoweverのFeatureActivatedメソッドで利用可能であることがわかりました。 – Mishal

関連する問題