激活WCF服务期间的FileLoadException

时间:2013-04-20 03:44:30

标签: wcf iis activation fileloadexception

在IIS中部署我的WCF服务后,访问该服务时出现此错误:

  

' / MyService'中的服务器错误应用

     

给定的程序集名称或代码库无效。 (例外   HRESULT:0x80131047)描述:发生了未处理的异常   在执行当前Web请求期间。请查看   堆栈跟踪以获取有关错误及其位置的更多信息   起源于代码。

     

异常详细信息:System.IO.FileLoadException:给定的程序集   名称或代码库无效。 (来自HRESULT的异常:0x80131047)

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

堆栈追踪:

     

[FileLoadException:给定的程序集名称或代码库无效。   (HRESULT的例外情况:0x80131047)]   System.RuntimeTypeHandle.GetTypeByName(String name,Boolean   throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,Boolean   loadTypeFromPartialName,ObjectHandleOnStack type)+0
  System.RuntimeTypeHandle.GetTypeByName(String name,Boolean   throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean   loadTypeFromPartialName)+153 System.Type.GetType(String typeName)   +89 System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath,EventTraceActivity eventTraceActivity)+936
  System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo   serviceActivationInfo,EventTraceActivity eventTraceActivity)+76
  System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串   normalizedVirtualPath,EventTraceActivity eventTraceActivity)+901

     

[ServiceActivationException:服务' /MyService/MySvcImpl.svc'   由于编译期间的异常,无法激活。该   异常消息是:给定的程序集名称或代码库无效。   (HRESULT的例外情况:0x80131047)。]   System.Runtime.AsyncResult.End(IAsyncResult result)+650220
  System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult的   结果)+210733
  System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult的   ar)+166

我打开了程序集绑定日志查看器(FUSLOGVW.EXE),但它没有显示任何绑定失败。任何人都知道可能导致这种情况的原因,或者如何调试它?

2 个答案:

答案 0 :(得分:2)

发现问题!在这里张贴,因为它可能有一天会帮助某人。

我的web.config包含一个服务激活元素,其工厂属性如下:

<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="MyService.SvcImpl.svc" 
         service="MyService.SvcImpl" 
         factory="MyCompany.MyServiceHostFactory, MyCompany.MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" />
  </serviceActivations>
</serviceHostingEnvironment>

factory属性包含来自强名称程序集的类引用。但是,PublicKeyToken属性应该由构建系统设置为正确的值,具体取决于是使用了测试签名证书还是正式签名证书。 构建步骤以某种方式失败并使程序集的强名称无效。因此,异常中消息的第一部分非常精确。它只是没有告诉我哪个组件无法加载。 FUSLOGVW.EXE也没有任何帮助。

答案 1 :(得分:0)

当我尝试在此位置'AppCode / Authentication'引用文件时遇到了同样的问题,但是当我将文件夹的名称更改为'App_Code / Authentication'时, strong>问题已解决。