FileNotFoundException与SPSite构造
-
06-07-2019 - |
题
我尝试的实例的实例 SPSite
在农场服务器在一定程(MyApp.exe)和我把它作为参数的整个URI(http://mysite:80/).我还确信,该帐户运行 MyApp.exe
是 Site Collection Administrator
.
然而,我不能让一个实例 SPSite
不管我试图做到的。它总是引发 FileNotFoundException
.
任何人都有一个想法?
堆栈跟踪:
在 Microsoft。SharePoint。SPSite..构造函数(SPFarm 农场,Uri requestUri,布尔 contextSite,SPUserToken userToken)
在 Microsoft。SharePoint。SPSite..构造函数(String requestUrl)在 MyCompanyName.服务。HelperClass.GetItemStateInSharePoint(SharePointItem 项目)在 C:\工作区\MyCompanyName\发展\主\MyCompanyName.SharePoint\服务\HelperClass.cs:线 555
另一个侧面说明...我有一个网应用程序+网站收集的,我可以通过浏览器没有任何问题。
解决方案
当SharePoint无法在SharePoint配置数据库中找到请求的网站集时,会抛出FileNotFoundException。我的猜测是您尚未在网址 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或打开管理中心并创建新的网站集。
其他提示
将构建属性中的平台目标更改为x64在SharePoint 2010上为我解决了此问题。
阅读本网站 http://community.bamboosolutions.com/forums/t/ 8179.aspx 如果您正在运行OS x64位并使用MSTest(32位)它将失败,请使用nunit works !!!
如果它是访问SharePoint 2010的控制台应用程序,则确保项目的Build Target为x64,.NET Framework为3.5。
此问题更多是用户权限问题,提供以下权限
用户权限 SharePoint网站 ---最低读取权限
Sharepoint服务器 ---添加到WSS_ADMIN_WPG组
数据库 --- Sharepoint Content DB(网站集数据库) - db_owner权限 Sharepoint配置数据库(共享点安装的配置数据库) - - db_owner权限
在我的博客中阅读更多内容
http://sharepointinstallation.blogspot.com/十二分之二千零一十/最小的许可要求的到execute.html
对象模型也可能不喜欢您提供的URL。如果您没有为其提供创建网站集的确切URL或您在备用访问映射中配置的确切URL,则会抛出可能不一定有意义的异常。在您的情况下,您可以尝试 http:// mysite
或 http:// machinename
。
异常的Stacktrace会有所帮助。
我认为您可以通过禁用“仅我的代码”来了解它是什么文件以及发生了什么。在工具中 - >选项 - >调试并在调试器显示异常的调用堆栈时查看filename参数(如果你当然可以调试它),或者可能在异常消息中显示名称。
检查你的web.config并查看是否存在缺少文件的配置。
在12个蜂巢中查看日志。如果您的日志设置正确,则会丢失该文件。
编辑:检查您的所有DLL是否都在GAC中。检查您的web.config文件是否包含所有信息:namespace,Classname,NameSpace,Version = version_number,Culture-your_culture,PublicKeyToken = your_signed_token
我最近发现构造函数的这个问题可能是由构造函数的starnge行为引起的
我正在考虑MOSS 2007。
当您将完整站点URL传递给构造函数时,它似乎只是考虑URL的站点部分,选择Web应用程序选择器控件中“当前已选中”的Web应用程序。
因此,例如,当您有“ http:// webapp / sites / site ”时,并拥有“ http:// weabapp:22345 "当你打电话
SPSite site = new SPSite("http://webapp/sites/site")
它尝试为“ http:// webapp:22345 / sites / site <实际创建一个网站对象/ A>&QUOT;并失败。
我有同样的问题。我想用我的用户ID运行控制台应用程序。我是网络应用程序所有者+农场管理员。仍然无法运行该应用程序。
问题由
解决-
将构建属性中的平台目标更改为x64
-
在网站设置中 - &gt;用户和权限 - &gt;网站集管理员有两个名字。删除了其他名称,它开始工作。
醇>
您可以将项目编译目标设置为“任何CPU”。重要的是将MSTest主机进程配置为以64位运行。打开.testsettings文件,转到“主机”选项卡并设置“以64位运行测试...”
如果在此之后运行测试时VS告诉您没有,请再次删除并添加测试项目(我不知道更好的解决方法)
希望它有所帮助!
我们有同样的问题,但我熟悉不同的原因,这里有一个摘要:
- 您可能输入错误或以其他方式输入了错误的地址
- 运行该进程的用户帐户没有所需的权限,这些权限是:读取SharePoint网站的权限,以及SharePoint Config数据库和内容数据库的dbo。
- 在64位服务器上构建时,进程必须是64位进程(默认值为64位“任何CPU”)。
- 该过程必须针对.NET 3.5 醇>
我的问题的解决方案是在GAC中注册SharePoint 12.0.0.0程序集。这听起来不像是你的问题,但仅仅是我们。
我们几天前遇到了同样的问题,解决方案是设置应用程序,即尝试创建de SPSite对象,使用与Sharepoint的Web应用程序相同的AppPool。
希望它有所帮助。
x64问题上的MSTest是导致这个问题的原因。适用于控制台应用程序。
我有类似的问题。
在我的场景中,我能够从控制台应用程序创建SPSite实例,但是当另一个队友试图这样做时,应用程序抛出了与上面提到的相同的异常。
解决方案:我在Content Db服务器框中添加了另一个队友作为管理员(这可能不是每个人都可以),代码工作正常且没有错误
SharePoint 2010上的相同问题。但问题出在我们访问SharePoint对象模型的Web服务上。此服务应在其下运行的应用程序池应该是服务器场管理员。
切换到关可能不是每个人的选择。
在我的情况下,问题是我是在64位服务器,我已任何CPU检查(所以这是选择正确的版本),但是我的测试设置的设定"力测试运行中的32位进程"(GAH!)
在MSTest,去试>编辑测试设置-追踪和试验的影响。
选择的主人。
确保你是对的正确版本。
这里是我的清单VS2010SP1,MSTest.
- 你需要SP1所以,你可以测试的目标。净3.5.它不会的工作。净4.0
- 确保该网站载-我推出了网站直接从VS2010编辑,因为它是一个超级链接
- 验证建立设置。选择64位,如果服务器64位。
- 在我的情况下,我有64位服务器,但选择64将失败!这是我第一个线索。
- 验证测试设置的支持的正确位。
我在尝试访问Sharepoint 2010时遇到了同样的问题。
我通过将Target Framework更改为.NET 3.5来修复它.-这是Sharepoint 2010支持的版本。
在我的情况下,这肯定是我登录到Windows的帐户的权限问题。
在以管理员身份运行的SharePoint Management Shell中尝试此命令:
Get-SPSite' http:// yoursite / yourcollection '
如果出现错误,请以应用池用户或用于安装SharePoint的帐户登录SharePoint服务器,然后再次尝试上述命令。
如果有效,则表示您之前的帐户存在权限问题。要解决此问题,请在同一个shell窗口中运行此命令,并提供要在VS中使用的帐户:
Add-SPShellAdmin -UserName Domain \ User
我遇到了同样的问题,我在下面进行了更改并开始工作。
- 将visual studio中的平台目标更改为x64
- 确保您在“管理员”中运行visual studio模式。 醇>