我尝试在自定义进程(MyApp.exe)中在场服务器上实例化SPSite
的实例,并将其作为参数提供给整个URI(http://mysite:80/)。我还确保运行MyApp.exe
的帐户为Site Collection Administrator
。
但是,无论我想做什么,我都无法制作SPSite
的实例。它总是抛出FileNotFoundException
。
有人有个主意吗?
堆栈跟踪:
在 Microsoft.SharePoint.SPSite..ctor(SPFarm farm,Uri requestUri,Boolean contextSite,SPUserToken userToken)
在 Microsoft.SharePoint.SPSite..ctor(字符串 requestUrl)at MyCompanyName.Service.HelperClass.GetItemStateInSharePoint(SharePointItem 项目) C:\工作区\ MyCompanyName \开发\ MAIN \ MyCompanyName.SharePoint \服务\ HelperClass.cs:行 555
另一方面说明......我有一个Web应用程序+网站集,我可以通过浏览器访问它而没有任何问题。
答案 0 :(得分:14)
当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或打开管理中心并创建新的网站集。
答案 1 :(得分:12)
将构建属性中的平台目标更改为x64在SharePoint 2010上为我解决了此问题。
答案 2 :(得分:10)
如果你正在运行你的OS x64位并使用MSTest(32位)它会失败,请使用nunit工作!!!
答案 3 :(得分:4)
如果它是访问SharePoint 2010的控制台应用程序,则确保项目的Build Target为x64,.NET Framework为3.5。
答案 4 :(得分:3)
此问题更多是用户权限问题,提供以下权限
用户权限 SharePoint网站 ---最低读取权限
Sharepoint服务器 ---添加到WSS_ADMIN_WPG组
数据库 --- Sharepoint Content DB(网站集数据库) - db_owner权限 Sharepoint配置数据库(共享点安装的配置数据库) - - db_owner权限
在我的博客中阅读更多内容
http://sharepointinstallation.blogspot.com/2010/12/minimal-permission-required-to-execute.html
答案 5 :(得分:2)
对象模型也可能不喜欢您提供的URL。如果您没有为其提供创建网站集的确切URL或您在备用访问映射中配置的确切URL,则会抛出可能不一定有意义的异常。在您的情况下,您可以尝试http://mysite
或http://machinename
。
答案 6 :(得分:1)
检查你的web.config并查看是否存在缺少文件的配置。
在12个蜂巢中查看日志。如果您的日志设置正确,则会丢失该文件。
编辑:检查您的所有DLL是否都在GAC中。检查您的web.config文件是否包含所有信息:namespace,Classname,NameSpace,Version = version_number,Culture-your_culture,PublicKeyToken = your_signed_token
答案 7 :(得分:1)
我们有同样的问题,但我熟悉不同的原因,这里有一个摘要:
答案 8 :(得分:1)
您可以将项目编译目标设置为“Any CPU”。重要的是将MSTest主机进程配置为以64位运行。打开.testsettings文件,转到Hosts选项卡并设置“以64位运行测试......”
如果在此之后运行测试时VS告诉您没有,请再次删除并添加测试项目(我不知道更好的解决方法)
希望它有所帮助!
答案 9 :(得分:1)
我有同样的问题。我想用我的用户ID运行控制台应用程序。我是网络应用程序所有者+农场管理员。仍然无法运行该应用程序。
问题由
解决将构建属性中的平台目标更改为x64
在网站设置中 - >用户和权限 - >网站集管理员有两个名字。删除了其他名称,它开始工作。
答案 10 :(得分:1)
我最近发现构造函数的这个问题可能是由构造函数的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”实际创建一个站点对象并失败。
答案 11 :(得分:1)
异常的Stacktrace会有所帮助。
我认为您可以通过在工具中禁用“仅我的代码”来了解它是什么文件以及发生了什么 - >选项 - >调试并在调试器显示异常的调用堆栈时查看filename参数(如果你当然可以调试它),或者可能在异常消息中显示名称。
答案 12 :(得分:0)
我有类似的问题。
在我的场景中,我能够从控制台应用程序创建SPSite实例,但是当另一个队友试图这样做时,应用程序抛出了与上面提到的相同的异常。
解决方案:我在Content Db服务器框中添加了另一位队友作为管理员(这可能不是每个人都可以),代码工作正常且没有错误
答案 13 :(得分:0)
x64问题上的MSTest是导致这个问题的原因。适用于控制台应用程序。
答案 14 :(得分:0)
我们几天前遇到了同样的问题,解决方案是设置应用程序,即尝试创建de SPSite对象,使用与Sharepoint的Web应用程序相同的AppPool。
希望它有所帮助。
答案 15 :(得分:0)
我的问题的解决方案是在GAC中注册SharePoint 12.0.0.0程序集。这听起来不像是你的问题,但仅仅是我们。
答案 16 :(得分:0)
SharePoint 2010上的相同问题。但问题出在我们访问SharePoint对象模型的Web服务上。此服务应在其下运行的应用程序池应该是服务器场管理员。
答案 17 :(得分:0)
切换到NUnit可能不适合所有人
在我的情况下,问题是我在64位服务器上,我检查了任何CPU(所以它选择了正确的版本)但我的测试设置被设置为“强制测试以32位进程运行”(GAH! )
在MSTest中,转到TEst->编辑测试设置 - >跟踪和测试影响
选择主机。
确保您使用的是正确版本。
这是我的VS2010 SP1清单,MSTest。
答案 18 :(得分:0)
我在尝试访问Sharepoint 2010时遇到了同样的问题。
我通过将Target Framework更改为.NET 3.5来修复它.-这是Sharepoint 2010支持的版本。
答案 19 :(得分:0)
在我的情况下,这肯定是我登录到Windows的帐户的权限问题。
在以管理员身份运行的SharePoint Management Shell中尝试此命令:
Get-SPSite'http://yoursite/yourcollection'
如果出现错误,请以应用池用户或用于安装SharePoint的帐户登录SharePoint服务器,然后再次尝试上述命令。
如果有效,则表示您之前的帐户存在权限问题。要解决此问题,请在同一个shell窗口中运行此命令,并提供要在VS中使用的帐户:
Add-SPShellAdmin -UserName Domain \ User
答案 20 :(得分:0)
我遇到了同样的问题,我进行了以下更改,然后它开始工作。