Web 服务中的 SPSite 抛出 401 错误

发布于 2024-07-29 20:15:00 字数 861 浏览 6 评论 0原文

我有这样的代码:

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 Web 应用程序之外)运行此代码,则结果是 http 响应“401 UNAUTHORIZED”而不是 SOAP 响应。 这很奇怪,因为这段代码位于“try-catch”块中,如果抛出任何异常,我会在 SOAP 响应中返回自己的错误消息。

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

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

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

在 web.config 中设置“

有人知道出了什么问题吗?

I have this code:

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

The "myUrl" is top domain url with WSS 3.0. The authentication is set to Windows.
If I run this code from command-line under "external_app_user" account, all is fine. But if I run this code from webservice (outside of WSS webapplication), then result is http response "401 UNAUTHORIZED" instead of SOAP response. It's odd, because this code is in "try-catch" block, and if is any excception thrown I returned own error message in SOAP response.

The code is running on the same machine as WSS.

If I run the webservice from webbroser on the machine where web service is running, the classic windows login form is shown. If I run the webservice from webbrowser on another computer, I get only "401 UNAUTHORIZED" http response.

The web service is running under correct account. This account has access to the WSS (tested via sharepoint website). If i try get "System.Security.Principal.WindowsIdentity.GetCurrent().Name" the correct username is returned.

In web.config is set "<identity impersonate="true" userName="_my_username_" password="_my_password_" />.

Anyone has idea what is wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

破晓 2024-08-05 20:15:00

您无法捕获 401 的原因是因为 SharePoint 对此异常有自定义处理,请参阅此线程:无法捕获 SharePoint 访问被拒绝错误(包括如何关闭它的建议)。

The reason why you cannot catch the 401 is because SharePoint has custom handling for this exception, see this thread: Cannot catch the SharePoint Access denied error (including a suggestion how to turn it off).

半衬遮猫 2024-08-05 20:15:00

您可以在 IIS 中检查是否同时允许匿名和 Windows 身份验证。 那么它可能会允许您以匿名身份通过,而不是读取您的 Windows 身份,这会导致以后未经授权。

You could check in IIS if both Anonymous and Windows Authentication is allowed. Then it may be allowing you through as anonymous, instead of reading your windows identity, which leads to an unauthorized later.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文