Skip to main content
 首页 » 编程设计

c#之Web 服务中的 SPSite 抛出 401 错误

2024年02月24日35me-sa

我有这个代码:

using ( var site = new SPSite( myUrl ) ) { 
    using ( var web = site.AllWebs[0] ) { 
        // read-only operations 
    } 
} 

“myUrl”是 WSS 3.0 的顶级域 url。身份验证设置为 Windows。 如果我从“external_app_user”帐户下的命令行运行此代码,一切都很好。但是,如果我从 web 服务(在 WSS webapplication 之外)运行此代码,则结果是 http 响应“401 UNAUTHORIZED”而不是 SOAP 响应。这很奇怪,因为这段代码在“try-catch” block 中,如果抛出任何异常,我会在 SOAP 响应中返回自己的错误消息。

代码与 WSS 在同一台机器上运行。

如果我在运行网络服务的机器上从 webbroser 运行网络服务,则会显示经典的 Windows 登录表单。如果我从另一台计算机上的网络浏览器运行网络服务,我只会收到“401 UNAUTHORIZED”http 响应。

Web 服务在正确的帐户下运行。此帐户可以访问 WSS(通过 Sharepoint 网站测试)。如果我尝试获取“System.Security.Principal.WindowsIdentity.GetCurrent().Name”,则会返回正确的用户名。

在 web.config 中设置“ 。

谁知道哪里出了问题?

请您参考如下方法:

您无法捕获 401 的原因是因为 SharePoint 具有对此异常的自定义处理,请参阅此线程:Cannot catch the SharePoint Access denied error (包括如何关闭它的建议)。