【问题标题】:WCF: Could not load file or assembly ... the system cannot find the file specifiedWCF:无法加载文件或程序集...系统找不到指定的文件
【发布时间】:2011-10-23 00:59:39
【问题描述】:

我有一个托管在 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" %>

【问题讨论】:

    标签: wcf iis .net-3.5 svc


    【解决方案1】:

    使用程序集绑定日志查看器查看 clr 正在查看请求程序集的位置 - http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.100).aspx

    【讨论】:

    • 我已经有了绑定日志,它正在查看正确的位置,但是对于错误的文件 (X.Y.Z.DLL) ...
    • 你清除了framework目录下站点的aspnet缓存吗?
    • 不,以前从未这样做过,这是要走的路:aspdotnetfaq.com/Faq/… ???
    • 不,我指的是删除 iis 在临时目录中保存的应用程序的副本。见blogs.msdn.com/b/dougste/archive/2008/08/11/…。不过,我从来不需要达到帖子所指示的程度。我只是做 iisreset 然后通过 Windows 资源管理器手动删除目录。
    【解决方案2】:

    错误消息可能具有误导性。尝试在同一个项目中创建一个测试页面,并根据类型名称创建一个服务类的实例。当您导航到此测试页面时,它应该给出正确的错误消息,说明它无法找到哪些程序集。您可以使用以下代码,例如

    
    
        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);

    【讨论】:

      【解决方案3】:

      此 WCF 是否有任何第三方库引用,要求应用程序池是 32 位版本或 64 位版本?验证 AppPool 设置为经典,适当集成

      【讨论】:

        猜你喜欢
        • 2015-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-11
        • 2020-07-08
        • 2010-12-01
        相关资源
        最近更新 更多