2012-01-04 110 views
3

我正在使用以下代码从sharepoint访问Web应用程序。SharePoint:SPContext.Current在SharePoint Foundation 2010中返回null

SPWebApplication webApplication = SPContext.Current.Site.WebApplication; 

它正常工作与SharePoint服务器2010(MOSS2010)。但是,当我使用SharePoint Foundation 2010(WSS4.0)SPContext.Current始终返回null。谁能告诉我可能是什么原因呢?我该如何解决这个问题?

感谢和问候, Sharmila

+0

确定'SPContext看看这里。当前'是'null'?此代码在哪里运行(WebPart/Console Application/TimerJob)? – Stefan 2012-01-04 10:46:53

+0

Yes.SPContext.Current返回null。代码在webpart中运行 – Mishal 2012-01-04 11:32:19

+0

这是一个沙盒解决方案(在Foundation环境中)? – 2012-01-05 12:47:50

回答

4

我发现SPContext被发现为null的一个常见原因是当你有一个错误配置的AAM。 Sharepoint理解为您的网站配置了哪些网址是非常重要的,因为如果您的网址未注册,则无法确定该网址是否位于SPContext内部,因此可以创建该网址。

我看到的最常见的更改是修改 IIS站点的主机标头。这是一个巨大的禁忌,请不要这样做(使用 代替AAM)。如果您确实继续并修改这些新添加的标头,那么您新添加的标头只有部分功能。在SharePoint 的内部,有很多组件直接依赖于URL,特别是在内部查看此URL。您发现(对于 开发人员而言)是对SPContext.Current(SharePoint核心优势的核心部分)的引用无效。这会导致随机 SharePoint页面,Web部件和自定义功能造成严重破坏。

,如果你想知道如何安装空空导弹(并找出它们为什么如此重要)看看我的博客文章的主题 http://blog.staticvoid.co.nz/2011/05/sharepoint-alternate-access-mappings.html

0

当你建立你的代码,你构建它的SP2010服务器的机器上,然后将代码部署到基金会的机器?如果你这样做,我怀疑你需要重建基础服务器上的代码,引用基础程序集,而不是服务器程序集。

+4

'SPContext'对象是Microsoft.SharePoint.dll程序集中的核心概念,它在基础和办公服务器中都很常见。 – naivists 2012-01-04 12:03:45

+0

我在Foundation 2010(wss4.0)中分别编译了代码,但SPContext.Current为null。但SPContext.Current可用于sitecollection。但是当为Web应用程序部署Web部件时它为空。 – Mishal 2012-01-04 12:13:50

+0

您好,我发现SPContext.Current在接收器的FeatureActivated方法中可用。但是,当我尝试从其他任何地方访问Web应用程序时,它是空的。 – Mishal 2012-01-04 12:45:45

相关问题