2009-08-25 2 views
2

SharePointサイトのページを編集しようとするとエラーが発生します。 WinDbgのを使用して、私は実際にエラーがあることを参照してください。私は、web.configファイルの<SafeControls>セクションに含まれていないページ上のコントロールを持っているよう安全でないWebパーツ/コントロールを特定する方法

Microsoft.SharePoint.ApplicationRuntime.SafeControls+UnsafeControlException

これは私には見えます。私はページのaspxファイルを見てきましたが、web.configに参照がないコントロールは表示されません。

少し深く掘る(およびSosex.dllを使用して)私はエラーにつながるコールスタックから次のデータを得た:

0:013> !mframe 03 
0:013> !mdv 
Frame 0x3: (Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(System.Guid)): 
[A0]:this:0xc00c03e8 (Microsoft.SharePoint.ApplicationRuntime.SafeControls) 
[A1]:guid:{ef2d8253-a451-56da-be1d-5f32d5227173} VALTYPE (MT=0000064278430ea8, ADDR=000000000308caa0) (System.Guid) 
[L0]:null (System.Type) 
[L1]:0x633c50 (System.String) STRVAL=The type could not be found or it is not registered as safe. 
[L2]:null (System.Type) 

私はコントロールのGUIDを見つけたようなので、それが見えます([ A1])が発生しています。ハウヴァー、私はこのGUIDが参照しているコントロールを見つける方法がわかりません。この情報を格納するSQL Serverのどこかにテーブルが必要ですか?私は既にdbo.WebPartsを試してみましたが、GUIDでtp_IDを選択しましたが、何も見つかりませんでした。私は何かを欠いていると思いますか?

+0

WinDbgを使用している場合は、おそらくULSログとイベントビューアをチェックしても何も見つかりませんでしたか? –

+0

正直言って、私はULSログとイベントログをチェックするステップをスキップしました。便利なものがある場合に備えて、私は戻ってチェックします。 –

答えて

0

プログラムでWebパーツを操作するには、あなたがページからWebパーツを削除するか、見つけるだろうかのアイデアを見つけるために、this articleを参照してくださいSPLimitedWebPartManager

を使用することができます。

デバッガを使用すると、これらのWebパーツをすべて一覧表示し、特定のIDに対して表示されるDisplayTitleだけを表示するのはかなり簡単です。

2

Whoa there! SQL Serverから徐々に遠ざかります)

最初に調べるのはdifference between a closed web part and a deleted web partです。

「ページ編集モード」にないときに表示されるメニュー操作は閉じられ、Webパーツは表示されません。SharePointはアセンブリをロードしようとしますが、対応するセーフコントロールエントリがないとエラーが発生します。

この問題が解決しない場合は、簡単に削除する方法は、?contents = 1をURLの末尾に置き、メンテナンスモードでページを開きます。

このhelspを期待してください!

internal static Guid GetTypeId(MD5HashProvider md5Provider, Type type, string assemblyName) 
{ 
    byte[] bytes = new UnicodeEncoding().GetBytes(assemblyName + "|" + type.FullName); 
    return new Guid(md5Provider.GetHash(bytes)); 
} 

だから、本当にすべてのアセンブリと型を介して実行、それを見つけるとGUIDを一致させたい場合は:私はこれを見つけた反射板を使用して

0

は、彼らがそれぞれの制御のためのGUIDを生成する方法です。 幸運。私は同じ問題を抱えています。私はそれがどれであるかを特定するまで、一度に1つのコントロールを削除する予定です。

関連する問題