依赖项目构建会破坏WCF服务

时间:2010-11-22 23:53:32

标签: .net web-services wcf

我有一个WCF Web服务项目,比如FooService.vbproj,带有FooService.svc端点。它的实现在一个单独的项目Foo.vbproj中,它有一个实现IFooService服务契约的Foo.vb类和其他文件。 FooService有一个对Foo的项目引用。 FooService本地托管在IIS中。

当我构建FooService时,它会编译Foo项目,然后编译FooService项目,可以正常工作;浏览器中的http://localhost/Foo/FooService.svc为我提供了端点信息页面。但是如果我仅仅构建Foo ,那么我在浏览器中访问http://localhost/Foo/FooService.svc,我得到了一个黄色的死亡屏幕,“找不到方法:'Foo.Bar Foo.IFooService。 GetFizz(System.Guid)'。更多详情如下。

原来它正在将旧版本的Foo.dll复制到FooService的bin文件夹中。它来自哪里?

有关如何排除故障的任何想法?该服务不应该保留“第一个”新的Foo.dll,以便端点仍然可以工作吗?

完整堆栈跟踪:

[MissingMethodException: Method not found: 'Foo.Bar Foo.IFooService.GetFizz(System.
       System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0
       System.Reflection.Assembly.GetType(String name, Boolean throwOnError) +36
       System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +174
       MyCo.Infrastructure.MultipleBindingHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +994
       System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +11666348
       System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +42
       System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479

1 个答案:

答案 0 :(得分:0)

事实证明,通过另一个引用,在Foo中存在对Foo.dll的循环间接引用。但是仍然不确定为什么它会将一个dll复制到一个没有构建的项目中。

重要的是,当您有循环引用时,Visual Studio和/或msbuild会出现意外行为。