首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从WCF服务调用的InProcProxyFactory.CreateInstance

从WCF服务调用的InProcProxyFactory.CreateInstance
EN

Stack Overflow用户
提问于 2012-10-31 03:26:42
回答 2查看 347关注 0票数 3

我正在尝试使用来自IDesign的ServiceModelEx库。当我尝试呼叫时:

InProcFactory.CreateInstance();

在WCF服务中(基本上是从WCF服务A调用WCF服务B),我得到了以下错误:

找不到动态程序集

失败的代码是:

代码语言:javascript
复制
  internal static Assembly[] GetWebAssemblies()
  {
     Debug.Assert(IsWebProcess());
     List<Assembly> assemblies = new List<Assembly>();

     if(Assembly.GetEntryAssembly() != null)
     {  
        throw new InvalidOperationException("Can only call in a web assembly");
     }
     foreach(ProcessModule module in Process.GetCurrentProcess().Modules)
     {
         assemblies.Add(Assembly.LoadFrom(module.FileName));
         if (module.ModuleName.StartsWith("App_Code.") && module.ModuleName.EndsWith(".dll"))
         {
             assemblies.Add(Assembly.LoadFrom(module.FileName));
         }
         if (module.ModuleName.StartsWith("App_Web_") && module.ModuleName.EndsWith(".dll"))
         {
             assemblies.Add(Assembly.LoadFrom(module.FileName));
         }
     }
     if (assemblies.Count == 0)
     {
         throw new InvalidOperationException("Could not find dynamic assembly");
     }
     return assemblies.ToArray();
  }

由于这不是网站或web应用程序(它是App_Web服务),因此程序集不是使用WCF或App_Code作为前缀的。但是,如果我从网站、web应用程序或EXE调用代码,它确实可以工作。这是deisgn做的吗?

EN

回答 2

Stack Overflow用户

发布于 2012-11-08 22:43:04

也许您期望的模块在此场景中根本没有加载。

票数 1
EN

Stack Overflow用户

发布于 2017-06-26 14:37:38

这是通用解析器倒下了。它试图发现所有可能包含数据契约的程序集,但随着不同的托管环境(特别是IIS变体)的出现,这有点像是一场军备竞赛。动态代码的引入也使生活变得更加困难。

如果您使用最新的ServiceModelEx (SME),它会修复此问题。只需确保您在下载中使用最新的.NET版本(当前为4.6.1),因为下载的SME的旧.NET版本(例如4.0及更早版本)不会有这些修复。如果需要,您可以(在限制范围内)对.NET版本进行降级。例如,我把4.6.1版本降到了4.5.2。

注意:只有在通过泛型解析器使用数据协定继承时,才需要这样做。如果你不需要这个特性,并且它给你带来了问题,你可以注释掉有问题的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13146273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档