【发布时间】:2011-12-15 03:24:07
【问题描述】:
错误:“无法显示或导入此页面上的 Web 部件。找不到类型或未将其注册为安全”
试图在源代码中查找此错误的详细信息,但不太确定问题的确切位置。
请参阅 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
添加时间:2011 年 10 月 26 日上午 11:36
清单.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 策略会限制本地计算机用户帐户(用于运行服务)会导致这种行为?
2011 年 11 月 3 日编辑:
好的,终于安装了“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].
【问题讨论】:
-
添加了用于控件本身的功能接收器代码。
-
在尝试部署解决方案时添加了来自 CA 的错误响应
-
发现问题与 Sharepoint 服务器的安装不当有关。用显微镜卸载并按照安装步骤操作,现在一切正常。
标签: sharepoint sharepoint-2007 web-parts