2010-11-22 57 views
0

我有一個WCF Web服務項目,說FooService.vbproj與FooService.svc端點。它的實現在一個獨立的項目Foo.vbproj中,Foo.vb類實現了IFooService服務契約和其他文件。 FooService具有對Foo的項目引用。 FooService在本地託管在IIS中。依賴項目構建打破WCF服務

當我構建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 

回答

0

原來在Foo中通過另一個引用對Foo.dll進行了循環間接引用。儘管如此,仍然不確定爲什麼它會將dll複製到未構建的項目中。

重要的是,當您有一個循環引用時,Visual Studio和/或msbuild會表現異常。