【问题标题】:SharePoint AJAX Web Part 401.2/3 errorsSharePoint AJAX Web 部件 401.2/3 错误
【发布时间】:2011-01-01 08:03:23
【问题描述】:

我最近开始编写用于 SharePoint 的 AJAX Web 部件,但遇到了一个奇怪的错误。似乎 EnsurePanelFix() 导致 Web 部件抛出 401 错误;在日志中,401.2 和 401.3 错误几乎同时出现。在对这里和其他一些网站进行了一些研究后,我对 EnsurePanelFix() 进行了一些更改,目前如下:

void EnsurePanelFix
{
            // Change AJAX doPostBack behavior to fix the update panel.
            if (this.Page.Form != null)
            {
                String fixupScript = @"
                                     if (typeof(_spBodyOnLoadFunctionNames) !== 'undefined'){
                                     _spBodyOnLoadFunctionNames.push(""_initFormActionAjax"");
                                     function _initFormActionAjax() {
                                     if (_spEscapedFormAction == document.forms[0].action){
                                     document.forms[0]._initialAction =
                                     document.forms[0].action;
                                     }
                                     }

                                     RestoreToOriginalFormAction = function() {
                                     if (_spOriginalFormAction != null) {
                                     if (_spEscapedFormAction==document.forms[0].action){
                                     document.forms[0].action=_spOriginalFormAction;
                                     }
                                     _spOriginalFormAction=null;
                                     _spEscapedFormAction=null;

                                     document.forms[0]._initialAction = document.forms[0].action;
                                     }
                                     };
                                     }";

                string scriptKey = "UpdatePanelFixup";
                if (!Page.ClientScript.IsClientScriptBlockRegistered(scriptKey))
                    ScriptManager.RegisterStartupScript(this, typeof(SpecDatabaseViewer), scriptKey, fixupScript, true);

                ScriptManager.RegisterStartupScript(this,
                  typeof(SpecDatabaseViewer), "UpdatePanelFixup",
                  fixupScript, true);
            }

查看安全日志,我看到失败是这样记录的:

Event Type: Failure Audit
Event Source:   Security
Event Category: Object Access 
Event ID:            560
Date:       1/6/2010
Time:       11:46:34 AM
User:       NT AUTHORITY\NETWORK SERVICE
Computer:   SHAREPOINT
Description:
Object Open:
    Object Server:  SC Manager
    Object Type:    SERVICE OBJECT
    Object Name:    WinHttpAutoProxySvc
    Handle ID:  -
    Operation ID:   {0,69477107}
    Process ID: 404
    Image File Name:    C:\WINDOWS\system32\services.exe
    Primary User Name:  SHAREPOINT$
    Primary Domain: SPDOMAIN
    Primary Logon ID:   (0x0,0x3E7)
    Client User Name:   NETWORK SERVICE
    Client Domain:  NT AUTHORITY
    Client Logon ID:    (0x0,0x3E4)
    Accesses:   Query status of service 
            Start the service 
            Query information from service 

    Privileges: -
    Restricted Sid Count:   0
    Access Mask:    0x94

有多个失败审计,它们之间唯一不同的数据是操作 ID。

鉴于没有这段代码一切正常,任何人都可以看出我会遇到身份验证或文件权限问题的任何原因吗?谢谢。

编辑:我很确定它与 ACL 有关,但我不确定在哪里寻找可能导致问题的资源。

【问题讨论】:

    标签: ajax sharepoint web-parts http-status-code-401


    【解决方案1】:

    你能发现,究竟是哪个 URL 产生了 401.x 错误吗?如果您使用 Fiddler 拦截呼叫,则必须可见。

    此外,此描述似乎与您的情况非常相似:http://forums.asp.net/t/1187045.aspx

    【讨论】:

    • 另外,我也碰巧偶然发现了那个论坛帖子 - David Wang 的文章让我检查了日志中的子状态代码。不幸的是,它并没有帮助我解决问题。
    • 如果我尝试预览 Web 部件,Fiddler 将显示 url 为 sharepoint:15741/_layouts/WPPrevw.aspx?ID=233。如果我尝试将 Web 部件添加到页面,我会收到 503(服务不可用)错误,然后在我重置 IIS 之前,即使预览 Web 部件也会给我一个 503。
    • 在“233”之后的 url 末尾是否真的有一个斜线符号,或者这只是 StackOverflow?如果是,那么 - 你有答案
    • 不,这只是 StackOverflow 的注释格式。虽然这是问题所在,但我本可以拍拍我的额头继续前进。 :)
    • 另外,我编辑了这个问题来说明这一点,但只是把它扔在那里,我很确定它与 EnsurePanelFix() 正在访问的资源的 ACL 条目有关。不过,我不确定如何解决这个问题,尤其是考虑到我的开发用户对所有内容都拥有完全控制权。
    猜你喜欢
    • 2011-05-04
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2016-06-09
    • 2018-02-13
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多