解决办法:Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Logging

问题描述是一个另外的application,从RTC上down下来run后在source「Logging.Logger.Write」处出现如下错误

{"Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.":"Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"}

解决办法重新download「EnterpriseLibrary.Logging」library后即可。
首先错误信息已经提示「Could not load file or assembly(不能下载或者装配XXXX)」说明项目缺少了该「EnterpriseLibrary.Logging」library
以VS2005下载library方法:右键solution >> Manage NuGet Package for Solution... >> 点击title部的Browse并键入EnterpriseLibrary进行search >>左键单击所要下载的library,右侧会出现待reference的project,勾选丢失的project并点击Install。

类似错误可能还会有出现无法load其他的library,比如无法加载Microsoft.Practices.EnterpriseLibrary.Data 等等等,都只需要重新down其library即可。

// 2017-9-19 18:30:10 bluetata 追記 :

最近研究了下类似问题,自己开始的认知有些片面,另外其他的情况也会产生类似异常,比如。
bin中dll引用出现问题web.conifg的配置问题操作权限的问题版本低旧也会出现问题

[下摘自某不祥作者遇到的类似情况研究说明]
有些时候我们写的asp.net应用程序是运行在虚拟主机上。有一些虚拟主机可能是由于安全的考虑,对asp.net做了权限设置,会导致我们的应用程序无法正常运行。
问题现象: 由于某种原因,asp.net不能加载某些dll文件,出现如下错误提示: Server Error in '/' Application.
问题分析:
根据我的观察,asp.net应用程序直接生成的dll可以正常加载,由asp.net直接调用的外部dll也可以正常加载,但是仅被外部dll引用的其他外部dll不能加载。我的猜想是:由于权限是不完全的,asp.net应用本身生成的dll和直接引用的dll可以通过权限的继承获得权限,而仅被外部dll引用的其他外部dll因为权限的限制不能继承权限,因此出现了权限不足的问题。
问题解决:
通过在我电脑的试验,推测虚拟主机上修改了根web.config(在我电脑上其位置为C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG)的设置.
默认web.config的权限设置节如下:

<location allowOverride="true">
        <system.web>
            <securityPolicy>
                <trustLevel name="Full" policyFile="internal" />
                <trustLevel name="High" policyFile="web_hightrust.config" />
                <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
                <trustLevel name="Low"  policyFile="web_lowtrust.config" />
                <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
            </securityPolicy>
            <trust level="Full" originUrl="" />
        </system.web>
</location>

推测虚拟主机上修改之后的设置:

<location allowOverride="false">
        <system.web>
            <securityPolicy>
                <trustLevel name="Full" policyFile="internal" />
                <trustLevel name="High" policyFile="web_hightrust.config" />
                <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
                <trustLevel name="Low"  policyFile="web_lowtrust.config" />
                <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
            </securityPolicy>
            <trust level="High" originUrl="" />
        </system.web>
</location> 

他首先设置了allowOverride为false,这就阻止了在用户web.config中重新定义权限的能力。然后,他定义trust level为High,而不是默认的Full。经我测试,只要trust level不为Full,仅被外部dll引用的其他外部dll就不能被加载。 因此,我建议技术支持将allowOverride节设置为true。这样我就可以在web.config中重新指定权限了。
例:<trust level="Full" originurl=""></trust>


本文原创由`bluetata`发布于blog.csdn.net、转载请务必注明出处。


Flag Counter

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Practices.EnterpriseLibrary.Logging 是一个日志记录库,可以帮助开发人员记录应用程序中的异常、警告、信息等信息。要使用 Practices.EnterpriseLibrary.Logging,需要按照以下步骤操作: 1. 在 Visual Studio 中,创建一个新的控制台应用程序或 Web 应用程序。 2. 通过 NuGet 安装 Enterprise Library Logging 包。 3. 在 App.config 或 Web.config 文件中,添加以下配置节: ``` <configSections> <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging" requirePermission="true" /> </configSections> <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General"> <listeners> <add name="Console Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.ConsoleTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.ConsoleTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging" traceOutputOptions="None" /> </listeners> <categorySources> <add switchValue="All" name="General"> <listeners> <add name="Console Trace Listener" /> </listeners> </add> </categorySources> </loggingConfiguration> ``` 4. 在代码中,使用以下代码记录日志: ``` Logger.Write("This is a message", "General"); ``` 以上是 Practices.EnterpriseLibrary.Logging 的基本使用方法,可以根据实际需求进行配置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bluetata

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值