|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)asp.net|办理|成绩|假造主机有些时分我们写的asp.net使用程序是运转在假造主机上。有一些假造主机多是因为平安的思索,对asp.net做了权限设置,会招致我们的使用程序没法一般运转。
成绩征象:
因为某种缘故原由,asp.net不克不及加载某些dll文件,呈现以下毛病提醒:ServerErrorin/Application.
---------------------------------------------
Requiredpermissionscannotbeacquired.
Description:Anunhandledexceptionoccurredduringtheexecutionofthecurrentwebrequest.Pleasereviewthestacktraceformoreinformationabouttheerrorandwhereitoriginatedinthecode.
ExceptionDetails:System.Security.Policy.PolicyException:Requiredpermissionscannotbeacquired.
SourceError:
Anunhandledexceptionwasgeneratedduringtheexecutionofthecurrentwebrequest.Informationregardingtheoriginandlocationoftheexceptioncanbeidentifiedusingtheexceptionstacktracebelow.
StackTrace:
[PolicyException:Requiredpermissionscannotbeacquired.]
System.Security.SecurityManager.ResolvePolicy(Evidenceevidence,PermissionSetreqdPset,PermissionSetoptPset,PermissionSetdenyPset,PermissionSet&denied,BooleancheckExecutionPermission)+2738293
System.Security.SecurityManager.ResolvePolicy(Evidenceevidence,PermissionSetreqdPset,PermissionSetoptPset,PermissionSetdenyPset,PermissionSet&denied,Int32&securitySpecialFlags,BooleancheckExecutionPermission)+57
[FileLoadException:CouldnotloadfileorassemblyMicrosoft.Practices.ObjectBuilder,Version=1.0.51205.0,Culture=neutral,PublicKeyToken=nulloroneofitsdependencies.Failedtograntminimumpermissionrequests.(ExceptionfromHRESULT:0x80131417)]
System.Reflection.Assembly.nLoad(AssemblyNamefileName,StringcodeBase,EvidenceassemblySecurity,AssemblylocationHint,StackCrawlMark&stackMark,BooleanthrowOnFileNotFound,BooleanforIntrospection)+0
System.Reflection.Assembly.InternalLoad(AssemblyNameassemblyRef,EvidenceassemblySecurity,StackCrawlMark&stackMark,BooleanforIntrospection)+211
System.Reflection.Assembly.InternalLoad(StringassemblyString,EvidenceassemblySecurity,StackCrawlMark&stackMark,BooleanforIntrospection)+141
System.Reflection.Assembly.Load(StringassemblyString)+25
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(StringassemblyName,BooleanstarDirective)+32
成绩剖析:
依据我的察看,asp.net使用程序间接天生的dll能够一般加载,由asp.net间接挪用的内部dll也能够一般加载,可是仅被内部dll援用的其他内部dll不克不及加载。我的料想是:因为权限是不完整的,asp.net使用自己天生的dll和间接援用的dll能够经由过程权限的承继取得权限,而仅被内部dll援用的其他内部dll由于权限的限定不克不及承继权限,因而呈现了权限不敷的成绩。
成绩办理:
经由过程在我电脑的实验,推想假造主机上修正了根web.config(在我电脑上其地位为C:WINDOWSMicrosoft.NETFrameworkv2.0.50727CONFIG)的设置.
默许web.config的权限设置节以下:
<locationallowOverride="true">
<system.web>
<securityPolicy>
<trustLevelname="Full"policyFile="internal"/>
<trustLevelname="High"policyFile="web_hightrust.config"/>
<trustLevelname="Medium"policyFile="web_mediumtrust.config"/>
<trustLevelname="Low"policyFile="web_lowtrust.config"/>
<trustLevelname="Minimal"policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trustlevel="Full"originUrl=""/>
</system.web>
</location>
推想假造主机上修正以后的设置:
<locationallowOverride="false">
<system.web>
<securityPolicy>
<trustLevelname="Full"policyFile="internal"/>
<trustLevelname="High"policyFile="web_hightrust.config"/>
<trustLevelname="Medium"policyFile="web_mediumtrust.config"/>
<trustLevelname="Low"policyFile="web_lowtrust.config"/>
<trustLevelname="Minimal"policyFile="web_minimaltrust.config"/>
</securityPolicy>
<trustlevel="High"originUrl=""/>
</system.web>
</location>
他起首设置了allowOverride为false,这就制止了在用户web.config中从头界说权限的才能。然后,他界说trustlevel为High,而不是默许的Full。经我测试,只需trustlevel不为Full,仅被内部dll援用的其他内部dll就不克不及被加载。因而,我倡议手艺撑持将allowOverride节设置为true。如许我就能够在web.config中从头指定权限了。
例:<trustlevel="Full"originUrl=""/>
比来已不研讨aps.net了,因而也没有仔细往查找深层的缘故原由,也许我的熟悉另有误。但愿那位妙手能够道出深层的缘故原由,或斧正我的毛病。
前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。 |
|