【问题标题】:SharePoint: SPContext.Current returns null for in SharePoint foundation 2010SharePoint:SPContext.Current 在 SharePoint Foundation 2010 中返回 null
【发布时间】:2012-01-25 16:05:23
【问题描述】:

我正在使用以下代码从共享点访问网络应用程序。

SPWebApplication webApplication = SPContext.Current.Site.WebApplication;

它适用于 sharepoint server 2010(MOSS2010)。但是,当我使用 SharePoint Foundation 2010(WSS4.0) SPContext.Current 时,总是返回 null。谁能告诉我这可能是什么原因?我该如何解决这个问题?

感谢和问候, 沙米拉

【问题讨论】:

  • 你确定SPContext.Currentnull 吗?这段代码在哪里运行(WebPart/Console Application/TimerJob)?
  • Yes.SPContext.Current 返回 null。代码在webpart中运行
  • 这是沙盒解决方案(在 Foundation 环境中)吗?
  • @Mishal 你有没有找到解决方案,我手动部署到共享点的程序集也遇到了类似的问题?

标签: sharepoint


【解决方案1】:

我发现 SPContext 为空的常见原因之一是您的 AAM 配置不正确。 sharepoint 了解为您的站点配置了哪些 URL 非常重要,因为如果您的 URL 未注册,它无法判断 URL 是否在 SPContext 内,因此创建它。

我见过的最常见的变化是修改主机头 IIS 站点。这是一个巨大的禁忌,请永远不要这样做(使用 AAM 代替)。如果你继续修改这些你的新 添加的标题只会部分起作用。 SharePoint 内部 有很多组件直接依赖于 URL 和 特别是在内部查找此 URL。你发现了什么(对于 开发人员)是对 SPContext.Current 的引用( SharePoint 的优点)将不起作用。这会对随机性造成严重破坏 SharePoint 页面、Web 部件和自定义功能。

如果您想了解如何设置 AAM(并了解它们为何如此重要),请查看此处查看我关于该主题的博文 http://blog.staticvoid.co.nz/2011/05/sharepoint-alternate-access-mappings.html

【讨论】:

    【解决方案2】:

    当您构建代码时,您是否在 SP2010 Server 机器上构建它,然后将代码部署到 Foundation 机器上?如果你这样做了,我怀疑你需要在 Foundation 服务器上重建代码,引用 Foundation 程序集,而不是服务器程序集。

    【讨论】:

    • SPContext 对象是 Microsoft.SharePoint.dll 程序集中的核心概念,在基础和办公服务器中都很常见。
    • 我已经在 Foundation 2010(wss4.0) 中单独编译了代码,但是 SPContext.Current 为空。但是 SPContext.Current 可用于站点集合。但为 web 应用程序部署 webpart 时为 null。
    • 您好,我发现 SPContext.Current 在接收器的 FeatureActivated 方法中可用。但是当我尝试从其他任何地方访问 Web 应用程序时它为空。
    • 有什么想法吗?为什么 SPContext.Current 不可用?
    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 2013-01-04
    • 2011-06-17
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多