2009-06-22 4 views
1

У меня есть скомпилированная библиотека классов, содержащая пользовательский элемент управления, и я хотел бы добавить его на веб-страницу. Я добавляю тег объекта на страницу html, которая выглядит так:Добавление пользовательского элемента управления на веб-страницу

<OBJECT id="Main" classid="http://localhost/HelloWorld/Hello.World.dll#Hello.World.UserControl"></OBJECT> 

Однако элемент управления не отображается. DLL делает это в моих временных файлах, и я очищаю поле объекта на веб-странице. Я получаю сообщение об ошибке в моих временных интернет-файлов, который выглядит как:?!

FusionBindError имя = Hello.World.dll Hello.World.UserControl

Я не знаю, как отладить это в дальнейшем. Мне интересно, если это проблема с именами?

[Редактировать]

Следующая ошибка оказалась в журнале:

Creating security manager 

Microsoft.IE.Manager: Microsoft.IE.Manager: unique id lgth = 42 
Microsoft.IE.SecureFactory: Create SecureFactory() with security information 
Microsoft.IE.Manager: Created secure factory 
Microsoft.IE.SecureFactory: Creating instance of the object in the correct domain 
Microsoft.IE.SecureFactory: pUrl = http://localhost/HelloWorld/ 
Microsoft.IE.SecureFactory: id = 86474707A31303E2234383E24333E2135330000000 
Microsoft.IE.SecureFactory: link = 
Microsoft.IE.SecureFactory: licenses = 
Microsoft.IE.SecureFactory: deployment manifest = 
Microsoft.IE.SecureFactory: Security options = ZoneEvidence, SiteEvidence 
Microsoft.IE.Manager: Url = http://localhost/HelloWorld/ 
Microsoft.IE.Manager: UrlGetPartW returned 0 
Microsoft.IE.Manager: UrlGetPartW returned 80070057 
Microsoft.IE.Manager: CodeBase = http://10.248.43.15 
Microsoft.IE.Manager: Application = HelloWorld 
Microsoft.IE.Manager: Found a codebase 
Microsoft.IE.Manager: UrlCanonicalize returned 0 
Microsoft.IE.SecureFactory: URL codeBase: http://localhost/ 
Microsoft.IE.SecureFactory: URL application: HelloWorld 
Microsoft.IE.SecureFactory: Locating domain for http://localhost/ 
Microsoft.IE.IDKey: Created key 
Microsoft.IE.Manager: The domain does not exist. 
Microsoft.IE.IDKey: Created key 
Microsoft.IE.Manager: The domain does not exist. 
Microsoft.IE.SecureFactory: Need to create domain 
Microsoft.IE.SecureFactory: Application base: http://localhost/ 
Microsoft.IE.SecureFactory: Private Bin Path: bin 
Microsoft.IE.IDKey: Created key 
Microsoft.IE.SecureFactory: Trying to create instance of type http://localhost/HelloWorld/Hello.World.dll#Hello.World.Main 
Microsoft.IE.SecureFactory: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'ComponentFactory.Krypton.Toolkit.KryptonManager' threw an exception. ---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 
    at System.Windows.Forms.ToolStripManager.set_Renderer(ToolStripRenderer value) 
    at ComponentFactory.Krypton.Toolkit.KryptonManager.b() 
    at ComponentFactory.Krypton.Toolkit.KryptonManager..cctor() 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Security.Permissions.UIPermission 
The first permission that failed was: 
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Window="AllWindows"/> 

The demand was for: 
<PermissionSet class="System.Security.PermissionSet" 
version="1"> 
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Window="AllWindows"/> 
</PermissionSet> 

The granted set of the failing assembly was: 
<PermissionSet class="System.Security.PermissionSet" 
version="1"> 
<IPermission class="System.Security.Permissions.FileDialogPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Access="Open"/> 
<IPermission class="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Allowed="ApplicationIsolationByUser" 
UserQuota="512000"/> 
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Flags="Execution"/> 
<IPermission class="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Window="SafeTopLevelWindows" 
Clipboard="OwnClipboard"/> 
<IPermission class="System.Security.Permissions.SiteIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Site="localhost"/> 
<IPermission class="System.Security.Permissions.UrlIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Url="http://localhost/HelloWorld/Hello.World.dll"/> 
<IPermission class="System.Security.Permissions.ZoneIdentityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1" 
Zone="Internet"/> 
<IPermission class="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
version="1" 
Level="SafePrinting"/> 
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
version="1"> 
<ConnectAccess> 
<URI uri="(http|https)://localhost/*"/> 
</ConnectAccess> 
</IPermission> 
</PermissionSet> 

The assembly or AppDomain that failed was: 
Hello.World, Version=1.0.3460.18220, Culture=neutral, PublicKeyToken=null 
The method that caused the failure was: 
Void InitializeComponent() 
The Zone of the assembly that failed was: 
Internet 
The Url of the assembly that failed was: 
http://localhost/HelloWorld/Hello.World.dll 
    --- End of inner exception stack trace --- 
    at ComponentFactory.Krypton.Toolkit.KryptonManager.get_CurrentGlobalPalette() 
    at ComponentFactory.Krypton.Toolkit.VisualPanel..ctor() 
    at ComponentFactory.Krypton.Toolkit.KryptonPanel..ctor() 
    at Hello.World.BottomPanel.InitializeComponent() 
    at Hello.World.BottomPanel..ctor() 
    at Hello.World.Main.InitializeComponent() 
    at Hello.World.Main..ctor() 
    --- End of inner exception stack trace --- 
    at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateComInstanceFrom(String assemblyName, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at Microsoft.IE.SecureFactory.CreateInstanceWithSecurity2(Int32 dwFlags, Int32 dwZone, String wszSite, String wszId, String wszConfig, String wszLicenses, String wszDeploymentManifest) 
Microsoft.IE.SecureFactory: LOG exception 
Microsoft.IE.SecureFactory: Creating log entry ?FusionBindError!name=Hello.World.dll Hello.World.Main 
Microsoft.IE.SecureFactory: Logging to file C:\Documents and Settings\----\Local Settings\Temporary Internet Files\Content.IE5\F84FN98R\CAMF3O8J.HTM 

Журнал ошибок файл IEHost (CAMF308J.HTM) содержала:

***** IEHOST Error Log (Monday, 22 June 2009 12:00) ***** 



URL:  http://localhost/HelloWorld/Hello.World.dll 
Zone:  3 
Assembly Name: Hello.World.dll 
Type Name: Hello.World.Main 



----- Thrown Exception ----- 


System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'ComponentFactory.Krypton.Toolkit.KryptonManager' threw an exception. ---> System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 
    at System.Windows.Forms.ToolStripManager.set_Renderer(ToolStripRenderer value) 
    at ComponentFactory.Krypton.Toolkit.KryptonManager.b() 
    at ComponentFactory.Krypton.Toolkit.KryptonManager..cctor() 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Security.Permissions.UIPermission 
The first permission that failed was: 


The demand was for: 




The granted set of the failing assembly was: 
















The assembly or AppDomain that failed was: 
Hello.World, Version=1.0.3460.18220, Culture=neutral, PublicKeyToken=null 
The method that caused the failure was: 
Void InitializeComponent() 
The Zone of the assembly that failed was: 
Internet 
The Url of the assembly that failed was: 
http://localhost/HelloWorld/Hello.World.dll 
    --- End of inner exception stack trace --- 
    at ComponentFactory.Krypton.Toolkit.KryptonManager.get_CurrentGlobalPalette() 
    at ComponentFactory.Krypton.Toolkit.VisualPanel..ctor() 
    at ComponentFactory.Krypton.Toolkit.KryptonPanel..ctor() 
    at Hello.World.BottomPanel.InitializeComponent() 
    at Hello.World.BottomPanel..ctor() 
    at Hello.World.Main.InitializeComponent() 
    at Hello.World.Main..ctor() 
    --- End of inner exception stack trace --- 
    at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) 
    at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) 
    at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) 
    at System.Activator.CreateInstance(Type type, Boolean nonPublic) 
    at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) 
    at System.Activator.CreateComInstanceFrom(String assemblyName, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at System.AppDomain.CreateComInstanceFrom(String assemblyFile, String typeName, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm) 
    at Microsoft.IE.SecureFactory.CreateInstanceWithSecurity2(Int32 dwFlags, Int32 dwZone, String wszSite, String wszId, String wszConfig, String wszLicenses, String wszDeploymentManifest) 
+0

Я не пробовал создавать пользовательские элементы управления, подобные этому. Помогает ли средство просмотра журнала интеграции .NET вообще при отладке проблемы? – willem

+0

Мне не удалось получить программу просмотра Fusion Log, чтобы помочь мне. Но я включил параметр IEHostLogFile в .NET HKLM. Я смог получить выход оттуда. Похоже, что я сталкиваюсь с ошибкой разрешений с третьей стороной DLL, которую я наследую. – Daniel

ответ

1

Внутри этот файл трассировка стека - если вы разместите ее, я могу помочь.

Кроме того, вам необходимо иметь полное доверие с сайтом, установленным на вашей панели управления конфигурацией .NET x.x (или использовать CASPOL для его установки).

Вот как отлаживать

  1. Используйте скрипача (Google, скачать и запустить).
  2. Обновить информацию
  3. Включен ли контроль? Вы получаете HTTP 500 - если это так, отключите «Сценарии и исполняемые файлы» в каталоге в IIS --- IIS считает, что это ISAPI DLL и запускает его, если вы все исполняемые файлы
  4. Получаете ли вы соединение fusion (вы делаете) - что в нем - должна быть трассировка стека - вы его бросили? Вы можете исправить?
  5. У вас есть полное доверие, установленное на сайте?
+0

Хорошо, см. Править – Daniel

+0

Я выполнил инструкции на http://msdn.microsoft.com/en-us/library/zdc263t0(VS.80).aspx, чтобы установить http: // localhost/helloworld/для полного доверия. (Я попытался в различных зонах после сбоя локальной интрасети.) – Daniel

+0

Также: нет ошибок http 500. Скрипач классный, спасибо за это. Исключение стека выбрано третьей стороной dll. – Daniel

0

Обратите внимание: IE8 отключает элементы управления пользователями в интернет-зоне, поэтому имейте это в виду, если вы планируете развернуть это в производственной среде.

+1

Мне не нравятся Microsoft и их инженеры-подосновы. – slypete

+1

Я не уверен, что именно вы пытаетесь внести в беседу здесь? – EricLaw

Смежные вопросы