0

FormServerTemplates

スタイルライブラリ

SiteCollectionImages

ページ

デフォルトのSharePointライブラリがいくつかあり、「ライブラリ設定」をクリックすると例外が発生します。

ここに画像の説明を入力してください System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。Microsoft.SharePoint.ApplicationPages.ListEditPage.OnLoad(EventArgs e)at ASP._layouts_listedit_aspx.OnLoad(EventArgs e)at System.Web.UI.Control.LoadRecursive()at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、ブール値includeStagesAfterAsyncPoint)

私のすべての調査は、 DocumentTemplateUrlがnullであるため、この問題を示しています。

this.strDocTemplateURL = "";
  if (this.iBaseType == SPBaseType.DocumentLibrary)
  {
    this.strDocTemplateURL = ((SPDocumentLibrary) this.spList).DocumentTemplateUrl;
    this.DocumentLibraryGeneralLinks.Visible = true;
  }
  if (this.strDocTemplateURL.Length != 0)

ただし、このバグはカスタムマスターページでのみ発生することに注意してください。

デフォルトのv4マスターページは問題なく動作します。

そこで問題を引き起こす可能性のあるアイデアはありますか?

4

2 に答える 2

1

マスターページを確認しないと、カスタムマスターページにJavaScriptが欠落していると思います。私が試したいのは、v4マスターページを使用してレンダリングする場合のHTMLページのソースと、カスタムマスターページを使用してレンダリングされた出力を比較することです。次に、JavaScriptを比較します。これは、ヘッドセクションとページの下部だけでなく、ページ全体で行われます。特にContextInfoオブジェクトの割り当てを比較し、それらのプロパティが同様の値に割り当てられていることを確認します。

私の考えでは、[ライブラリ設定]ボタンが予期しているが見つからないJavaScriptコードまたは参照があり、それがエラーの原因です。

于 2012-11-09T17:33:39.190 に答える
0

これは、少なくとも非常に奇妙な問題または奇妙な例外です。しかし、この例外を引き起こす可能性のあるカスタムマスターページの制御が見つかりました。

その設定ページで問題を引き起こす可能性のある2行のコードが見つかりました:

1)web.Lists.TryGetList(listTitle);

2)RightsSensitiveVisibilityHelper.UserHasRights(PermissionContext.CurrentSite、SPBasePermissions.AddListItems、PermissionMode.Any、list);

例外はありませんが、これらのメソッドの1つを使用すると、例外が表示されます。

このバグは、WebパーツのOnLoadメソッドに奇妙なコードが含まれているためだと思います。このコードでは、子が確実に制御し、ヘッダーが作成されます。

 protected override void OnLoad(EventArgs e)
    {
        try
        {
            base.OnLoad(e);
            this.EnsureChildControls();
            this.InitWebPartHeader();
        }
        catch (Exception ex)
        {
            this.Controls.Clear();
            this.Controls.Add(new LiteralControl(ex.Message));
        }
    }

このコードがある理由はわかりませんが、「イベントの前にCreateChildControls()が呼び出されるようにします」というコメントもあります。

ですから、これが同じエラーを探している人々の時間を節約することを願っています。

于 2012-11-12T09:58:18.980 に答える