我在IIS 6/7中托管了一个WCF服务。我用.svc文件尝试了不同的东西,但我无法让它工作。我总是得到一个FileNotFoundException“无法加载文件或程序集'X.Y.Z'或其中一个依赖项。系统找不到指定的文件。”
程序集位于bin文件夹中,而不是GAC中。但是X.Y.Z是命名空间和类名,因此服务器正在查找错误的程序集文件名。程序集负载跟踪确认,它正在各个地方寻找X.Y.Z.DLL,但该命名空间和类名... X.Y.DLL将是程序集。
我尝试了svc,Visual Studio 2010生成并修改它以仅包含完全限定名称
<%@ ServiceHost Service="X.Y.Z, X.Y, Version=1.0.2.0, Culture=neutral, PublicKeyToken=xxxxx" %>
答案 0 :(得分:0)
使用程序集绑定日志查看器查看clr正在查看请求程序集的位置 - http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.100).aspx
答案 1 :(得分:0)
错误消息可能会产生误导。尝试在同一项目中创建测试页面,并从类型名称创建服务类的实例。当您导航到此测试页时,它应该给出关于它无法找到的程序集的正确错误消息。您可以使用以下代码,例如
Type serviceType = Type.GetType("X.Y.Z, X.Y, Version=1.0.2.0, Culture=neutral, PublicKeyToken=xxxxx");
var serviceInstance = Activator.CreateInstance(serviceType);
Response.Write(serviceInstance);
答案 2 :(得分:0)
此WCF是否有任何第三方库引用,这要求应用程序池为32位版本还是64位版本?验证应用程序池设置为经典,适当集成