有人可以解释一下吗?我在互联网上找不到任何东西,一切都在谈论如何以某种方式解决这个问题,但没有什么能说清楚到底是什么.
什么是完全可信的组件,它们如何彼此不同?
我有一个MS认证考试,这是我唯一不理解的话题.
编辑:谢谢你们.现在我对.NET的安全性有了更好的理解.我能够通过认证考试.
如何更改我的库以允许部分信任的呼叫者?
我收到以下错误:
'/'应用程序中的服务器错误.
安全例外
说明:应用程序尝试执行安全策略不允许的操作.要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别.
异常详细信息:System.Security.SecurityException:该程序集不允许部分信任的调用方.
来源错误:[没有相关的源代码行]
源文件:App_Web_kzj7vfkn.2.cs
行:0
经过一番查看问题后,似乎是导致问题的是System.Web.UI.ClientScriptManager
场景:我正在重构我们的一个应用程序以使用Nhibernate,并在几周之前遇到了这个问题.这个问题最初是与Nhibernate和Castle一起解决的,所以他们都重新编译了[assembly: AllowPartiallyTrustedCallers].但是,在对UI和代码库进行一些更改后,此错误再次出现.另外值得注意的是,我从Form_Main以编程方式控制加载我的用户控件.
问题:每当生成用户控件时,我都会收到以下错误.如果我注释掉加载,程序将运行.当我调试它结束于自动生成的InitializeComponent()函数.请注意,我无法进入该功能.
System.Security.SecurityException was unhandled
Message="That assembly does not allow partially trusted callers."
Source="A"
GrantedSet=""
PermissionState=""
RefusedSet=""
Url="file:///C:/Documents and Settings/ID/Desktop/A-NHIB2/bin/Debug/A.EXE"
StackTrace:
at A.UserControlCyber.InitializeComponent()
at A.UserControlCyber..ctor() in C:\Documents and Settings\ID\Desktop\A-NHIB2\UserControl_Cyber.cs:line 34
at A.FormMain.FormMainLoad(Object sender, EventArgs e) in C:\Documents and Settings\ID\Desktop\A-NHIB2\Form_Main.cs:line 30
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at …Run Code Online (Sandbox Code Playgroud) 我有两个Web应用程序(预编译站点),一个是第一方,将以完全信任的方式运行.另一个是第三方,应该部分信任(或具有特定权限).
TrustedAssembly.Web.Pages.MyPage应该在完全信任默认的AppDomain中运行.
UntrustedAssembly.Web.Pages.SomePage应该在部分信任AppDomain中运行.
此外,如果TrustedAssembly.Web.Pages.MyPage动态加载UntrustedAssembly.Web.Controls.SomeControl可以在部分信任和/或具有特定权限的情况下运行控件,而页面在完全信任下运行?
反之亦然,例如UntrustedAssembly.Web.Controls.SomePage动态加载TrustedAssembly.Web.Controls.MyControl,当页面在部分信任下运行时,是否可以完全信任地运行控件?
更新/仅供参考:这是.NET 4
我如何构建Castle.Core,Castle.ActiveRecord和NHibernate以允许部分信任?网上有大量的资源显示如何做到这一点,但是我找到的每个网站都说nant build -D:assembly.allow-partially-trusted-callers=true用来构建每个程序集.当我在这里查看Castle.Core 主干时,没有*.build文件.
如何实现这一目标?我使用的是.NET 3.5.这不是Web应用程序.
编辑:我们正在使用NHibernate 2.1.2GA(我相信最新的稳定版本).下面给出的说明的问题是它们看起来像是指从trunk创建Castle.Core和Castle.ActiveRecord.Trunk似乎要求NHibernate 3.0.0与我们的版本不匹配.
几乎所有的调整都是在项目属性下的Security选项卡中完成的.
此外,由于应用程序和SQL Server驻留在不同的域下,我必须设置我的连接字符串以包括数据库服务器域.所以我的原始连接字符串数据源必须从"Data Source = DB_SERVER"转到"Data Source = DB_SERVER.DOMAIN".
最后,我必须设置requirePermission="false"所有配置部分.我的configSections结果是这样的:
<configSections>
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" requirePermission="false"/>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" requirePermission="false"/>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
<section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
</configSections>
Run Code Online (Sandbox Code Playgroud)
完成所有操作后,我成功地将该应用程序发布到来自不同域的文件共享上,并让用户安装应用程序时没有任何问题.将这些步骤应用于我们的其他应用程序并使用我们新编译的程序集也像魅力一样.
我在Delphi 5中构建了许多可执行应用程序,它们通过网络与数据库进行通信.在我的Windows 7 PC和其他PC上,它们在没有任何警告的情况下运行,但在某些客户端PC上,它会发出"未知发布者"警告,这种警告看起来并不专业,可能会导致其他权限问题.
我的问题如下:
谢谢
c# ×3
.net ×1
.net-3.5 ×1
appdomain ×1
asp.net ×1
assemblies ×1
castle ×1
delphi ×1
delphi-5 ×1
full-trust ×1
nhibernate ×1