解决方案: 对 System.IO.FileNotFoundException “中的 SPSite = 新中的 SPSite(url)”

更新: 我发布这一问题到 MSDN 在这里 (http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=2808543&SiteID=1&mode=1) Michael Washam 的微软用一个简明的答案进行了回击.

创建 web 服务,以作为 BDC 便利门面 到 SharePoint 列表. 当我用这个从我的开发环境, 它能正常工作. 当我这迁移到新的服务器, 我遇到这个错误:

System.IO.FileNotFoundException: 在 Web 应用程序 http://localhost/sandbox 找不到. 请验证您已正确键入 URL. 如果现有的内容,应该服务的 URL, 系统管理员可能需要添加一个新请求 URL 映射到目标应用程序. 在 Microsoft.SharePoint.SPSite...ctor(SPFarm 农场, Uri requestUri, 布尔 contextSite, SPUserToken userToken) 在 Microsoft.SharePoint.SPSite...ctor(字符串 requestUrl) 在 Conchango.xyzzy.GetExistingDocument(字符串 minId, 字符串 maxId, 字符串 titleFilter) 在 C 中:\文档和 SettingsPaulMy DocumentsVisual 工作室 2005ProjectsxyzzyBDC_DocReviewBDC_DocReviewDocReviewFacade.asmx.cs:行 69

这里是行 69:

使用 (SPSite 站点 = 新 SPSite("http://localhost/sandbox"))

尝试了不同的 url 的变异, 包括使用服务器的真实姓名, 它的 IP 地址, 在 URL 上斜线结尾, 等. 我总是得到该错误.

我用 谷歌 它的研究. 很多人面临着这个问题, 或它的变化, 但似乎没有人出钱解决.

恶作剧的; 苔藓提供详细错误,没想到我要检查 12 蜂巢日志. 最终, 关于 24 小时后 我的同事 建议我这样做, 我查了一下 12 蜂巢日志,发现了这个:

尝试获取本地农场时出现异常:
System.Security.SecurityException: 不允许请求的注册表访问.
在 System.ThrowHelper.ThrowSecurityException(ExceptionResource 资源) 在 Microsoft.Win32.RegistryKey.OpenSubKey(字符串名称, 布尔值可写) 在 Microsoft.Win32.RegistryKey.OpenSubKey(字符串名称) 在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_RegistryConnectionString() 在 Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_Local() 在 Microsoft.SharePoint.Administration.SPFarm.FindLocal(SPFarm& 农场, 布尔值& 种矛盾又掺杂)
失败的程序集的区域是:  我的电脑

这开辟了新途径的研究, 所以它又回到了谷歌. 我被引到这 论坛帖子: http://forums.codecharge.com/posts.php?post_id = 67135. 这真的帮不了我,但它确实开始让我觉得那里是一个数据库和/或安全的问题. 我受尽折磨和 安德鲁 · 康奈尔 最后触发后说我要确保应用程序池标识帐户有权访问数据库的思想. 我以为它已经打了. 不过, 我的同事去和给 SQL 应用程序池标识帐户完全访问.

为她做了这种变化, 一切都开始工作.

下面发生的事情是最好的表示为 俳句 诗:

问题举手.
你摆动和小姐. 再试一次.
成功! 但如何? 为什么?

她并不想这样独自一人离开的事情, 更倾向于给最低所需的权限 (可能着眼写博客条目; 毒打冲到, muhahahahaha!).

她从应用程序池标识帐户之前删除连续的权限 … 已不再有任何显式权限的应用程序池标识帐户在所有. Web 服务继续工作得很好.

我们去和重新启动服务器. 一切继续做工精细.

所以, 重述一遍: 我们给应用程序池标识完全访问权限,然后把它拿走了. Web 服务开始工作,永远不会停止工作. 奇怪.

如果有人知道为什么应该会起作用, 请留下评论.

</结束>

Technorati 标签:

11 上“的想法解决方案: 对 System.IO.FileNotFoundException “中的 SPSite = 新中的 SPSite(url)”

  1. 费尔南多 · 戈麦斯 · 弗洛雷斯

    好帖子, 谢谢你. 以我为例, 我的问题被解决通过更改 web 服务的 apppool,以匹配的 sharepoint 网站集合.

    欢呼,
    费尔南多 · A. 戈麦斯 F.

    答复
  2. 埃德加 · 威尔逊

    你好, 我也有同样的问题. 在发展与 sharepoint 服务器在同一机器上的同时, 使用不同的权限不肯定不下运行相同的标识作为 sharepoint 的 Asp 开发服务器 (更多关于此这里: http://msdn.microsoft.com/en-us/library/58wxa9w5(VS.80).aspx) 那又怎样, 我已经在 IIS 中创建一个新的站点 (端口 8080) 具有作为 sharepoint 相同的标识。. 哇塞.
    希望这会有助于

    答复
  3. Zac Boyles
    有很好的机会,SQL 的 securityadmin 服务器角色修正你有一旦它被撞的问题. 这将是一个好的解释,它继续工作.
    答复
  4. 仙女

    好交上来. 我们现在有完全相同的问题. 这种问题和不明原因的意外/行为是为什么很多开发商不能忍受与 SharePoint 工作!

    答复
  5. 马库斯 ·

    文章的这部分….”给 SQL 的应用程序池标识帐户的完全访问”, 你能详细吗? “应用程序池标识” 我猜就意味着该 sharepoint 站点的应用程序池, 但 “对 SQL 的完全访问权限”, 你如何给那? 在我的应用程序池标识 db 服务器上创建登录不过瘾…那么,在那里新登录获取 dbo sharepoint 内容数据库上 (?) 访问? 或其他 sharepoint db 的一样好, 像配置 db? 对我来说那很难, 因为我 sp 内容 db 显然并不由 sql server 实例处理, 显然,这是在下 “/Microsoft Office Servers/14.0/Data”, 反正觉得在 sql 服务器经理….如何让任何想法 “对 SQL 的完全访问权限” 在这种情况下? 任何答复,不胜感激…我是困得我的控制台应用程序来创建 spsite 对象!!

    答复

留言

您的电子邮件地址不会被公开. 必需的地方已做标记 *