Web services 具有自定义EditForm调用列表web服务的SharePoint 2010-模拟不起作用

Web services 具有自定义EditForm调用列表web服务的SharePoint 2010-模拟不起作用,web-services,sharepoint-2010,impersonation,Web Services,Sharepoint 2010,Impersonation,我使用数据库连接方法将我的开发SP 2007 content db转换为SP 2010,从Win 2003虚拟机转换为Win 2008虚拟机。在我的旧VM上,一切都很好,在由管理员转换的生产服务器(SP 2010、Win 2008)上也很好。但是我的新开发虚拟机似乎有一个问题:我们使用一个定制的EditForm.aspx作为我们的一个SP库来捕获用户的元数据。当用户从库项的ECB中选择“Edit properties”时,他们将获得我们的自定义EditForm(我们使用SP Designer将默

我使用数据库连接方法将我的开发SP 2007 content db转换为SP 2010,从Win 2003虚拟机转换为Win 2008虚拟机。在我的旧VM上,一切都很好,在由管理员转换的生产服务器(SP 2010、Win 2008)上也很好。但是我的新开发虚拟机似乎有一个问题:我们使用一个定制的EditForm.aspx作为我们的一个SP库来捕获用户的元数据。当用户从库项的ECB中选择“Edit properties”时,他们将获得我们的自定义EditForm(我们使用SP Designer将默认EditForm更改为user ours)。此EditForm应用程序安装在IIS中的SharePoint应用程序下。在EditForm代码中,我们调用SP Lists web服务的UpdateListEMS web方法。当它碰到那行代码时,会抛出一个未经授权的错误。这就是问题所在

我在代码隐藏中使用DefaultCredentials,impersonate在SP web.configs(两个:inetpub/wwwroot/wss/virtualDirectory下的一个和14配置单元配置文件夹中的一个)和自定义EditForm.aspx应用程序的web.Config中都设置为true;web.config还具有Windows身份验证。模式设置为真;在IIS中,我只启用了ASP.NET模拟和Windows身份验证(禁用了匿名、基本、摘要和表单身份验证)。在inetpub日志文件中,我看到尝试点击/_vti_bin/Lists.asmx使用的是NT Authority/IUSR帐户(不是我当前登录的帐户),SP应用程序的应用程序池的标识是Administrator,这是我登录时使用的;管理员对农场、网站集、网站和图书馆拥有完全的权限;我可以通过浏览器点击SP web服务;如果我将EditForm应用程序的web.config更改为使用显式帐户(管理员帐户和p/w)进行模拟,那么它可以工作,但我不能使用它,因为我们的生产web.config不是这样设置的,并且我们将丢失在项目版本历史记录中进行更改的ID

因此,我的机器设置中缺少模拟(委派?)设置。所有现有代码都是在Win 2008中移植到SP 2010的,没有代码修改或对EditForm web.config文件的更改(已将生产与我的进行了比较),它在那里工作,只是在我的虚拟机上不工作。我看到过很多类似这样的帖子,其中提供了一个解决方案,比如更改代码,或者使用显式登录id进行模拟,或者更改为Kerberos。这些解决方案都不是我的选择。我需要保持代码和web.config与在生产环境中运行的相同。此外,我们希望模拟能够工作,因为我们希望用户的凭据由SP Lists web服务进行身份验证,而不是使用某些始终成功进行身份验证的帐户(安全问题),并且我们希望更新的库项的版本历史记录反映上次更新该项的实际用户ID,它在生产上做得很好


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

解决了这个问题。在将SP 2007转换为SP 2010的过程中,我需要在SP 2010中重新创建一个Web应用程序,以与SP 2007中的原始应用程序相匹配。问题是,我选择了“基于声明的身份验证”而不是“经典”。从这篇文章中,我发现了这样一句话:“您可以将任何受支持的身份验证方法与基于声明的身份验证模式结合使用,也可以使用仅支持Windows身份验证的经典模式身份验证。”因此,我认为基于声明是“新”的方式。显然不是。卸载我的内容数据库,从管理中心删除web应用,使用Classic重新创建web应用,附加内容数据库-一切正常。从中吸取的教训。 科文豪