SP 2007 - 无法显示Web部件

时间:2011-10-25 17:14:11

标签: sharepoint sharepoint-2007 web-parts

错误:“无法显示或导入此页面上的Webpart。无法找到类型或未将其注册为安全”

尝试在源代码中找到此错误的详细信息,但不确定确切问题的位置。

请参阅This Thread以了解之前的修复程序。

有关好位置的任何指针都可以开始吗?

DLL: TCBOE.ChartPart.dll

命名空间: TCBOE.Chartpart

FeatureReceiver.vb

Private Shared Sub AddOrRemoveChartHandlerToWebConfig(ByVal web As SPWebApplication, ByVal remove As Boolean)
    Dim asm As String = String.Format(CultureInfo.InvariantCulture, _
      "System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version={0}, Culture=neutral, PublicKeyToken={1}", _
      New Object() {"3.5.0.0", "31bf3856ad364e35"})
    Dim modif As New SPWebConfigModification("add[@path='ChartImg.axd']", _
      "configuration/system.web/httpHandlers")
    modif.Owner = "TCBOE.ChartPart"
    modif.Sequence = 0
    modif.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode

    modif.Value = String.Format(CultureInfo.InvariantCulture, _
      "<add verb=""{0}"" path=""{1}"" type=""{2}"" validate=""{3}"" />", _
      New Object() {"GET,HEAD,POST", "ChartImg.axd", asm, "false"})
    If (remove) Then
        web.WebConfigModifications.Remove(modif)
    Else
        web.WebConfigModifications.Add(modif)
    End If

End Sub
Private Shared Sub AddOrRemoveChartSettingsToWebConfig(ByVal web As SPWebApplication, ByVal remove As Boolean)
    Dim appSettings As New SPWebConfigModification("appSettings", "configuration")
    appSettings.Owner = "TCBOE.ChartPart"
    appSettings.Sequence = 0
    web.WebConfigModifications.Add(appSettings)

    Dim keyVal As String = String.Format(CultureInfo.InvariantCulture, _
     "storage={0};timeout={1};", _
     New Object() {"memory", "20"})
    Dim modif As New SPWebConfigModification("add[@key='ChartImageHandler']", "configuration/appSettings")
    modif.Owner = "TCBOE.ChartPart"
    modif.Sequence = 1
    modif.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode

    modif.Value = String.Format(CultureInfo.InvariantCulture, _
      "<add key=""{0}"" value=""{1}"" />", _
      New Object() {"ChartImageHandler", keyVal})
    If remove Then
        web.WebConfigModifications.Remove(modif)
    Else
        web.WebConfigModifications.Add(modif)
    End If
End Sub
<SharePointPermission(System.Security.Permissions.SecurityAction.Demand, ObjectModel:=True)> _
Public Overrides Sub FeatureActivated(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)
    Dim site As SPSite = TryCast(properties.Feature.Parent, SPSite)
    Dim web As SPWebApplication = site.WebApplication
    AddOrRemoveChartSettingsToWebConfig(web, False)
    AddOrRemoveChartHandlerToWebConfig(web, False)
    web.Farm.Services.GetValue(Of SPWebService)().ApplyWebConfigModifications()
    web.Update()
End Sub
<SharePointPermission(System.Security.Permissions.SecurityAction.Demand, ObjectModel:=True)> _
Public Overrides Sub FeatureDeactivating(ByVal properties As Microsoft.SharePoint.SPFeatureReceiverProperties)
    Dim site As SPSite = TryCast(properties.Feature.Parent, SPSite)
    Dim web As SPWebApplication = site.WebApplication
    AddOrRemoveChartSettingsToWebConfig(web, True)
    AddOrRemoveChartHandlerToWebConfig(web, True)
    web.Farm.Services.GetValue(Of SPWebService)().ApplyWebConfigModifications()
    web.Update()
End Sub

已添加:10/26/2011 @ 11:36 am

的Manifest.xml

(由WSPBuilder创建)

<?xml version="1.0"?>
<!-- Solution created by WSPBuilder. 10/26/2011 8:19:40 AM  -->
<Solution SolutionId="ee03c5c2-c9bd-4cfe-ac16-225f8e28072b" xmlns="http://schemas.microsoft.com/sharepoint/">
  <Assemblies>
    <Assembly Location="cablib.dll" DeploymentTarget="GlobalAssemblyCache" />
    <Assembly Location="TCBOE.ChartPart.dll" DeploymentTarget="GlobalAssemblyCache">
      <SafeControls>
        <SafeControl Assembly="TCBOE.ChartPart, Version=3.5.1.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="TCBOE.ChartPart" TypeName="*" Safe="True" />
      </SafeControls>
    </Assembly>
  </Assemblies>
  <TemplateFiles>
    <TemplateFile Location="IMAGES\ChartPartWP\oscillator_16.gif" />
    <TemplateFile Location="IMAGES\ChartPartWP\oscillator_32.gif" />
  </TemplateFiles>
  <FeatureManifests>
    <FeatureManifest Location="ChartPartWP\feature.xml" />
  </FeatureManifests>
</Solution>

是否存在CAS策略限制本地计算机用户帐户(用于运行服务)会导致此类行为的情况?

编辑11/3/2011:

好的,最后安装了“Great Practices”,它稳定可靠。得到原始控件我定制加载和工作应该。

在尝试部署解决方案时,去“安装”我编辑过的控件并收到此错误响应:

Feature '47d62f5e-b0e0-4f93-bcd1-081ca794527c' could not be installed because the loading of event receiver assembly "TCBOE.ChartPart, Verstion=3.5.1.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" failed: System.IO.FileNotFoundException: Could not load file or assembly 'TCBOE.ChartPart, Culture=neutral, PublicKeyToken=9f4da00116c38ec5' or one of its dependencies. The system cannot find the file specified. 
File name: 'TCBOE.ChartPart, Culture=neutral, PublicKeyToken=9f4da00116c38ec5' 
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) 
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
   at System.Reflection.Assembly.Load(String assemblyString) 
   at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject() 

WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

2 个答案:

答案 0 :(得分:1)

Web部件应该在web.config的SafeControls中注册。这很简单。请尝试以下链接:

http://msdn.microsoft.com/en-us/library/ms581321(v=office.12).aspx

答案 1 :(得分:0)

您是否使用usercontrol呈现webpart?如果是这样,请将它放在UserControl的顶部:

<%@ Assembly Name="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

如果您没有使用UserControl,只需修改您的代码,将该行添加到标记内的web.config中:

<add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

我在另一个帖子中告诉过你,你正在用超硬模式试图手工操作这些东西。如果您使用的是SmartPart或VSeWSS 1.3,那么将完成所有这些操作。