我有这样的代码:的SPSite在Web服务抛出401错误
using (var site = new SPSite(myUrl)) {
using (var web = site.AllWebs[0]) {
// read-only operations
}
}
的 “myUrl” 为顶级域名的网址与WSS 3.0。身份验证设置为Windows。 如果我在“external_app_user”帐户下从命令行运行此代码,则一切正常。但是,如果我从webservice(WSS webapplication外部)运行此代码,则结果是http响应“401 UNAUTHORIZED”而不是SOAP响应。这很奇怪,因为这段代码位于“try-catch”块中,如果有任何抛出,我在SOAP响应中返回了自己的错误消息。
代码与WSS在同一台机器上运行。
如果我在web服务运行的机器上从webbroser运行webservice,将显示经典的Windows登录窗体。如果我在另一台计算机上从webbrowser运行webservice,则只能获得“401 UNAUTHORIZED”http响应。
Web服务正在正确的帐户下运行。此帐户可以访问WSS(通过Sharepoint网站进行测试)。如果我尝试获取“System.Security.Principal.WindowsIdentity.GetCurrent()。Name”,则返回正确的用户名。
在web.config中设置为 “<身份冒充=” 真”的userName = “_ my_username_” 密码= “_ my_password_”/>。
任何人有想法有什么不好?
允许匿名和Windows身份验证。 现在我得到了stacktrace,并且401 UNAUTHORIZED错误从get的“AllWebs”属性中获得。 – TcKs 2009-07-30 10:47:30