22

我尝试在自定义进程(MyApp.exe)中实例化SPSite场服务器上的一个实例,并将其作为参数提供整个 URI(http://mysite:80/)。我还确保正在运行的帐户MyApp.exeSite Collection Administrator.

但是,我无法举例说明SPSite我正在尝试做的任何事情。它总是抛出一个FileNotFoundException.

有人有想法吗?

堆栈跟踪:

在 Microsoft.SharePoint.SPSite..ctor(String requestUrl) 在 Microsoft.SharePoint.SPSite..ctor(SPFarm 场,Uri requestUri,Boolean contextSite,SPUserToken userToken)
在 C 中的 MyCompanyName.Service.HelperClass.GetItemStateInSharePoint(SharePointItem item): \Workspaces\MyCompanyName\Development\Main\MyCompanyName.SharePoint\Service\HelperClass.cs:555 行

另一个旁注......我有一个 Web 应用程序 + 网站集,我可以通过浏览器毫无问题地访问它。

4

21 回答 21

14

当 SharePoint 无法在 SharePoint 配置数据库中找到请求的网站集时,会引发 FileNotFoundException。我的猜测是您尚未在 URL http://mysite:80上创建网站集。如果我尝试使用不存在的网站集的 URL 实例化一个新的 SPSite 对象,我会看到以下堆栈跟踪:

System.IO.FileNotFoundException : The site http://server/sites/bah could not be found in the Web application SPWebApplication 
Name=SharePoint - 80 Parent=SPWebService.
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
at Microsoft.SharePoint.SPSite..ctor(String requestUrl)

指定网站集的正确 URL 或打开管理中心并创建新的网站集。

于 2008-11-05T19:42:44.843 回答
12

将构建属性中的平台目标更改为 x64 为我在 SharePoint 2010 上解决了这个问题。

于 2010-10-05T20:02:03.893 回答
10

阅读此站点http://community.bamboosolutions.com/forums/t/8179.aspx如果您正在运行您的 OS x64 位并使用 MSTest(32 位),它将失败,使用 nunit 工作!

于 2009-10-07T07:29:02.283 回答
4

这个问题更多的是用户权限问题给予以下权限

用户权限 SharePoint 站点 --- 最低读取权限

Sharepoint 服务器 --- 添加到 WSS_ADMIN_WPG 组

数据库 --- Sharepoint Content DB(站点集合数据库)- db_owner 权限 Sharepoint Config DB(sharepoint 安装的配置 DB)- - db_owner 权限

在我的博客中阅读更多内容

http://sharepointinstallation.blogspot.com/2010/12/minimal-permission-required-to-execute.html

于 2010-12-03T22:13:52.087 回答
4

如果它是访问 SharePoint 2010 的控制台应用程序,请确保项目的构建目标是 x64 并且 .NET Framework 是 3.5。

于 2011-01-28T05:17:44.347 回答
2

对象模型也可能不喜欢您提供的 URL。如果您未向其提供创建网站集的确切 URL,或者未在备用访问映射中配置列出的确切 URL,它将引发可能不一定有意义的异常。在您的情况下,您可以尝试http://mysitehttp://machinename.

于 2008-11-05T19:44:47.913 回答
1

异常的堆栈跟踪会很有帮助。

我认为您可以通过在工具->选项->调试中禁用“只是我的代码”并在调试器显示时查看异常调用堆栈中的文件名参数来了解它是什么文件以及正在发生的事情(当然,如果您可以调试它),或者该名称可能会显示在异常消息中。

于 2008-11-05T19:27:25.357 回答
1

检查您的 web.config 并查看是否存在缺少文件的配置。

在你的 12 个蜂巢中寻找日志。如果您的日志设置正确,您将丢失该文件。

编辑:还要检查您的所有 DLL 是否都在 GAC 中。检查您的 web.config 文件是否包含所有信息:namespace,Classname, NameSpace, Version=version_number, Culture-your_culture, PublicKeyToken=your_signed_token

于 2008-11-05T19:27:58.790 回答
1

我最近发现构造函数的这个问题可能是由构造函数的严重行为引起的。
我正在讨论 MOSS 2007。当您将完整的站点 URL 传递给构造函数时,它似乎确实只考虑 URL 的站点部分,选择“当前选择”的 Web 应用程序Web 应用程序选择器控件。
因此,例如,您 在调用

SPSite site = new SPSite("http://webapp/sites/site")

它试图为“ http://webapp:22345/sites/site ”实际创建一个站点对象,但失败了。

于 2008-12-20T11:56:03.933 回答
1

我遇到过同样的问题。我想用我的用户 ID 运行控制台应用程序。我是 Web 应用程序所有者 + Farm 管理员。仍然无法运行该应用程序。

问题已解决

  1. 将构建属性中的平台目标更改为 x64

  2. 在站点设置 --> 用户和权限 --> 网站集管理员中有两个名称。删除其他名称并开始工作。

于 2011-02-03T13:09:41.640 回答
1

您可以将项目编译目标设置为“任何 CPU”。重要的是配置 MSTest 主机进程以 64 位运行。打开您的 .testsettings 文件,转到主机选项卡并设置“以 64 位运行测试...”

如果在此之后,当您运行测试时 VS 告诉您没有,请再次删除并添加您的测试项目(我不知道更好的解决方法)

希望能帮助到你!

于 2011-11-03T02:08:28.607 回答
1

我们有同样的问题,但我熟悉不同的原因,这里是一个总结:

  1. 您可能输入错误或以其他方式输入了错误的地址
  2. 运行该进程的用户帐户没有所需的权限,这些权限是:SharePoint 网站的读取权限,以及 SharePoint Config db 和 Content db 的 dbo。
  3. 在 64 位服务器上构建时,该进程必须是 64 位进程(默认为 64 位“任何 CPU”)。
  4. 该过程必须针对 .NET 3.5
于 2014-01-21T21:14:57.177 回答
0

几周前我被这个困扰。最终我发现找不到的文件是 SharePoint 程序集本身。运行时无法通过后期绑定加载附属程序集。

我的问题的解决方案是在 GAC 中注册 SharePoint 12.0.0.0 程序集。这听起来不像你的问题,但仅供参考。

于 2008-11-05T19:34:18.247 回答
0

几天前我们遇到了同样的问题,解决方案是设置应用程序,即尝试创建 de SPSite 对象,使用与 Sharepoint 的 Web 应用程序相同的 AppPool。

希望能帮助到你。

于 2009-06-15T21:24:42.133 回答
0

x64 问题上的 MSTest 对我来说是这个问题的原因。在控制台应用程序中工作。

于 2009-11-03T18:34:12.240 回答
0

我有类似的问题。

在我的场景中,我能够从控制台应用程序创建 SPSite 实例,但是当另一个团队成员尝试这样做时,应用程序抛出了与上述相同的异常。

解决方案:我在 Content Db 服务器框上添加了另一个队友作为管理员(这可能不是每个人都可以),代码工作正常且没有错误

于 2009-12-02T21:37:56.627 回答
0

SharePoint 2010 上的同样问题。但是问题出在我们的 Web 服务上,它正在访问 SharePoint 对象模型。此服务应在其下运行的应用程序池应该是场管理员。

于 2013-01-30T16:08:24.077 回答
0

切换到 NUnit 可能不是每个人的选择。
就我而言,问题是我在 64 位服务器上,我检查了任何 CPU(所以它选择了正确的版本)但我的测试设置设置为“强制测试在 32 位进程中运行”(GAH! )

在 MSTest 中,转到 TEst->Edit Test Settings->Trace and Test Impact。
选择主机。
确保您运行的是正确的版本。 这是你应该选择的

这是我的 VS2010 SP1,MSTest 清单。

  • 您需要 SP1,以便您可以针对 .NET 3.5 进行测试。它不适用于 .NET 4.0
  • 确保站点加载-我直接从 VS2010 编辑器启动站点,因为它是一个超链接
  • 验证构建设置。如果服务器是 64 位,则选择 64 位。
  • 就我而言,我有一个 64 位服务器,但选择 x64 会失败!那是我的第一个线索。
  • 验证测试设置是否支持正确的位。
于 2014-05-19T21:10:54.513 回答
0

我在尝试访问 Sharepoint 2010 时遇到了同样的问题。

我通过将目标框架更改为 .NET 3.5 来修复它。- 这是 Sharepoint 2010 支持的版本。

于 2014-11-25T11:51:14.437 回答
0

就我而言,这绝对是我登录 Windows 的帐户的权限问题。

在以管理员身份运行的 SharePoint 命令行管理程序中尝试此命令:

获取 SPSite ' http://yoursite/yourcollection '

如果您收到错误,请以应用程序池用户或用于安装 SharePoint 的帐户身份登录到 SharePoint 服务器,然后再次尝试上述命令。

如果它有效,那么您知道您以前的帐户存在权限问题。要解决此问题,请在同一 shell 窗口中运行此命令并提供您要在 VS 中使用的帐户:

添加-SPShellAdmin -用户名域\用户

于 2015-04-10T02:54:36.703 回答
0

我遇到了同样的问题,我进行了以下更改并开始工作。

  1. 将 Visual Studio 中的平台目标更改为 x64
  2. 确保您在“管理员”模式下运行 Visual Studio。
于 2019-01-19T13:33:30.137 回答