在我的解决方案中有三个项目:
web服务和web应用程序都使用log4net对单独的配置文件和AssemblyInfo.cs中的这一行进行配置:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]当我浏览到web服务(http://localhost/MyWebService/MyWebService.svc)的URL时,它看起来就像预期的一样--信息和指向wsdl的链接。
当我使用web应用程序时,所有的功能都是正确的。代码调用web服务并获得正确的应答响应。日志记录同时发生在web应用程序和web服务中。
但是,当我运行我的单元测试时,除了以下例外,它们都会失败:
Test method MyServiceTest.MyServiceAuthTest.TestValidateCorrectly threw exception: System.ServiceModel.ServiceActivationException: The requested service, 'http://localhost/MyWebService/MyWebService.svc' could not be activated. See the server's diagnostic trace logs for more information.
在本地机器的事件日志中,我得到以下消息:
WebHost failed to process a request. Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/12905972 Exception: System.ServiceModel.ServiceActivationException: The service '/MyWebService/MyWebService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045).
我删除和替换了引用,清理和重建了,甚至清除了临时的asp.net文件,但都没有效果。网站调用服务时没有任何问题,但测试失败。
有人知道这里会发生什么吗?
更新:我删除了对log4net的所有引用,测试运行并成功,没有问题。显然,这是远远不可取的。有什么建议吗?
更新2:这两种东西的结合解决了问题:
发布于 2009-10-21 05:59:31
您有从单元测试到log4net库的引用吗?试一试。
原因是:大多数单元测试框架在测试运行期间都会将二进制文件隐藏到其他地方,但是这样做并不能在所有情况下找到深度嵌套的引用。我曾经和NHibernate和log4net见过这个。在MSTest情况下,您不能停用阴影。NUnit GUI有一个选项,但我没有安装它,所以您必须自己查找:-)
发布于 2009-10-21 06:26:36
我还会考虑将log4net处理添加到单元测试配置中。不管怎么说,这在看失败时是非常有帮助的。
这个链接为NUNit解释了它,其他框架也应该是可能的。
https://stackoverflow.com/questions/1598618
复制相似问题