代码之家  ›  专栏  ›  技术社区  ›  TcKs

Web服务中的spsite引发401错误

  •  1
  • TcKs  · 技术社区  · 15 年前

    我有这个代码:

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

    “myurl”是具有wss 3.0的顶级域URL。身份验证设置为Windows。 如果我从“外部用户”帐户下的命令行运行此代码,一切都很好。但是,如果我从WebService(wssWebApplication之外)运行此代码,那么结果是HTTP响应“401 unauthorized”而不是SOAP响应。这很奇怪,因为这段代码在“try catch”块中,如果抛出了任何exception,我在SOAP响应中返回了自己的错误消息。

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

    如果我在运行Web服务的计算机上从Webbroser运行WebService,则会显示经典的Windows登录表单。如果我在另一台计算机上从WebBrowser运行WebService,我只得到“401未经授权”的HTTP响应。

    Web服务正在正确的帐户下运行。此帐户可以访问WSS(通过SharePoint网站测试)。如果我尝试获取“system.security.principal.windowsIdentity.getcurrent().name”,则返回正确的用户名。

    在web.config中,设置了“<identity impersonate=“true”username=“_my_username_u”password=“_my_password_u”/>gt;。

    有人知道怎么了吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community kfsone    7 年前

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

        2
  •  1
  •   Shiraz Bhaiji    15 年前

    如果允许匿名身份验证和Windows身份验证,则可以签入IIS。然后它可能允许您匿名通过,而不是读取您的Windows标识,这将导致以后未经授权。

        3
  •  1
  •   TcKs    15 年前