2

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

“/MyService”应用程序中的服务器错误。

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

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

源错误:

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

堆栈跟踪:

[FileLoadException:给定的程序集名称或代码库无效。(来自 HRESULT 的异常:0x80131047)]
System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔 loadTypeFromPartialName,ObjectHandleOnStack 类型)+0
System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔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(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +901

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

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

4

2 回答 2

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 在这里也没有任何帮助。

于 2013-04-20T04:22:56.983 回答
0

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

于 2019-12-10T09:36:46.873 回答