0

我使用从 Win 2003 虚拟机到 Win 2008 VM 的数据库附加方法将我的开发 SP 2007 内容数据库转换为 SP 2010。在我的旧 VM 上一切正常,在由管理员转换的生产服务器(SP 2010、Win 2008)上也能正常工作。但是我的新开发虚拟机似乎有一个问题:我们为我们的一个 SP 库使用自定义 EditForm.aspx 来捕获用户的元数据。当用户从库项目的 ECB 中选择“编辑属性”时,他们会得到我们的自定义 EditForm(我们使用 SP Designer 将默认的 EditForm 更改为用户我们的)。此 EditForm 应用程序安装在 IIS 中的 SharePoint 应用程序下。在后面的 EditForm 代码中,我们调用了 SP Lists web 服务的 UpdateListItems web 方法。当它碰到那行代码时,它会抛出 401 Unauthorized 错误。

我在后面的代码中使用 DefaultCredentials,在 SP web.configs 中模拟已设置为 true(两者:inetpub/wwwroot/wss/Virtualdirectories 下的一个和 14 hive Config 文件夹中的一个)和 web.config我的自定义 EditForm.aspx 应用程序;web.config 还具有 Windows 身份验证。模式设置为真;在 IIS 中,我只启用了 ASP.NET 模拟和 Windows 身份验证(匿名、基本、摘要和表单身份验证被禁用)。在 inetpub 日志文件中,我看到尝试点击 /_vti_bin/Lists.asmx 正在使用 NT Authority/IUSR 帐户(不是我当前登录的帐户),SP 应用程序的应用程序池的身份是管理员,这是我登录的;管理员对场、网站集、网站和图书馆拥有完整的权限;我可以通过浏览器访问 SP 网络服务;如果我改变网络。

所以,我在我的机器设置中缺少一个模拟(委托?)设置。所有现有代码都在 Win 2008 中移植到 SP 2010,无需代码模块或更改 EditForm web.config 文件(已将生产与我的进行了比较),它在那里工作,只是不在我的 VM 上。我已经看到很多这样的帖子,提供的解决方案是更改您的代码,或使用显式登录 ID 进行模拟,或更改为 Kerberos。这些解决方案都不是我的选择。我需要保持代码和 web.config 与在生产中运行的相同。此外,我们希望模拟工作,因为我们希望用户的凭据通过 SP Lists Web 服务进行身份验证,而不是使用某些帐户。始终成功通过身份验证(安全问题),

在 StackOverflow 上发布的这个问题很接近,但解决方案是更改为 Kerberos,我没有该选项:“使用模拟的 IIS 7.5 站点没有访问 Sharepoint Web 服务的权限”

4

1 回答 1

0

解决了。搞砸了早期步骤,在将 SP 2007 转换为 SP 2010 的过程中,我需要在 SP 2010 中重新创建一个 Web 应用程序以匹配我在 SP 2007 中的原始版本。问题是,我选择了“基于声明的身份验证”而不是“经典” . 从这篇文章:http ://technet.microsoft.com/en-us/library/cc262350(v=office.14).aspx ,我发现这句话:“您可以使用任何支持的身份验证方法与声明-based 身份验证模式,或者您可以使用经典模式身份验证,它仅支持 Windows 身份验证。" 所以我认为基于索赔是“新”的方式。显然不是。卸载我的内容数据库,从中央管理员中删除 Web 应用程序,使用 Classic 重新创建 Web 应用程序,附加内容数据库 - 一切都很好。在那里的某个地方吸取了教训。侯凯文

于 2013-08-09T22:03:24.207 回答