. net Remoting可以在web应用程序中工作,但不能在WCF主机中工作

本文关键字:工作 但不能 主机 WCF 应用程序 Remoting web net | 更新日期: 2023-09-27 18:05:40

这个问题已经让我困惑了几个小时,我完全不知道。我有以下远程代码:

private static IRolesAndResourcesManager InternalConnect(string host, string operatorName)
{
    string url = string.Format("tcp://{0}:{1}/IProxyFactory", host, ServicePort);
    object o = Activator.GetObject(typeof (IProxyFactory), url);
    IProxyFactory factory = (IProxyFactory) o;
    return factory.CreateRolesAndResourcesManager(operatorName);
}

当它从我们的网站内调用时,它工作正常。但是,我们也从WCF托管服务(基本上是控制台应用程序)链接到相同的DLL。当我从该进程中调用相同的方法时,我在下面一行得到一个异常:

return factory.CreateRolesAndResourcesManager(operatorName); // <-- Exception!

例外是:

系统。InvalidCastException:返回参数的类型无效在System.Runtime.Remoting.Proxies.RealProxy.ValidateReturnArg(对象参数类型参数类型

到目前为止,我发现的一切都说有某种DLL不匹配;就好像WCF进程被链接到旧版本的DLL。然而,我试过删除每一个二进制文件,清理,重建。见鬼,我曾经尝试过删除整个征兵,并再次检查Subversion中的所有内容。我还可以验证CreateRolesAndResourcesManager方法在Remoting主机端上运行并返回有效数据。

除了DLL不匹配之外,还有什么可以导致这种异常吗?有什么方法可以获得关于这个错误的更多信息吗?

更新:

绝对不是CLR版本不匹配。所有三个进程(IIS Express、Remoting Host、WCF进程)都有以下Environment.Version:

{4.0.30319.18444}
    Build: 30319
    Major: 4
    MajorRevision: 0
    Minor: 0
    MinorRevision: 18444
    Revision: 18444

我还运行了Visual Studio以及所有进程作为Admin,看看是否有安全问题,但这也不能解决问题。

. net Remoting可以在web应用程序中工作,但不能在WCF主机中工作

这个问题和答案:

系统。使用在强命名程序集中定义的接口的旧版本创建客户端激活对象时出现InvalidCastException

提示,如果服务器和客户端使用的。net CLR版本不同,则可能发生此错误,并且使用。net Remoting时,它们都必须是相同版本的CLR。我不确定是不是这样,但是您可以查看....

相关文章: