[Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException

[Remoting FAQ]

Loading a Remoting Host On IIS

得到BadImageFormatException异常


Version


Date


Creator


Description


1.0.0.1


2006-4-24


郑昀@Ultrapower


草稿

 

继续阅读之前,我们假设您熟悉以下知识:

n         Remoting

n         Remoting from IIS Hosted component

 [现象]

首先,这种情况发生在以下特殊情形:

服务器端把Remoting Objects“宿主(Host)”在IIS中;

客户端激活远端Remoting Objects的调用方则得到了这个异常“BadImageFormatException”。

 

比如浏览Remoting对象的URL:

http://localhost/MyHelloServer/Hello.soap?wsdl

立即得到了这样的错误提示:


IIS提示信息

System.BadImageFormatException: “MyHelloServer”
: “MyHelloServer”

 

 

需要特别指出的是,这种情况还有两个关联条件:

l         Remoting服务器端是用VS.NET 2005编译的。

l         你的服务器环境中,既有dotNet framework 1.1,又有dotNet framework 2.0

 [分析]

综上所述,往往人们就开始怀疑自己的编译是不是有问题,或者虚拟目录的权限问题。

但是,当你排除了这两个疑点之后,你应该还要想起一件事:

这种事情是不是和你的部署环境有关系。

 

默认情况下,如果你的机器环境中既有dotNet framework 1.1(通常是1.1.4322);又有dotNet framework 2.0 (通常是2.0.50727)。

那么当你在IIS管理器中新建一个虚拟目录的话,默认使用ASP.NET V1.1版本。如下图所示:

而你的Remoting Objects却是用dotNet framework 2.0编译出来的。在这种情况下,难怪IIS告诉你“文件“MyHelloServer”的格式无效”。

 

[解决]

综上所述,请修改你的虚拟目录的ASP.NET version为2.0。

时间: 2024-08-31 21:45:37

[Remoting FAQ]Loading a Remoting Host On IIS得到BadImageFormatException的相关文章

[Remoting FAQ]传递Remoting参数时遇到的两种常见错误

[Remoting FAQ] 传递Remoting参数时遇到的两种常见错误 Version Date Creator Description 1.0.0.1 2006-4-25 郑昀@Ultrapower 草稿   继续阅读之前,我们假设您熟悉以下知识: n         Remoting [现象1] 我们先来描述一个简单的错误.当你激活远端Remoting Objects时,却得到了这样的错误提示: 提示信息 Type 'Common.BTRequest' in Assembly 'Comm

跨域或者Internet访问Remoting[Remoting FAQ]

[Remoting FAQ] 跨域或者Internet访问Remoting Version Date Creator Description 1.0.0.1 2006-6-1 郑昀@Ultrapower 草稿   继续阅读之前,我们假设您熟悉以下知识: n         Remoting [需求] 虽然说,Remoting一般都在同一个域内调用,但有时候,也需要跨域访问,甚至于跨Internet访问.毕竟,让第三方远程测试下Remoting方法,不能要求人家加入你的域. [现象] 在走TCP

Microsoft .Net Remoting系列教程之三:Remoting事件处理全接触_自学过程

前言:在Remoting中处理事件其实并不复杂,但其中有些技巧需要你去挖掘出来.正是这些技巧,仿佛森严的壁垒,让许多人望而生畏,或者是不知所谓,最后放弃了事件在Remoting的使用.关于这个主题,在网上也有很多讨论,相关的技术文章也不少,遗憾的是,很多文章概述的都不太全面.我在研究Remoting的时候,也对事件处理发生了兴趣.经过参考相关的书籍.文档,并经过反复的试验,深信自己能够把这个问题阐述清楚了. 本文对于Remoting和事件的基础知识不再介绍,有兴趣的可以看我的系列文章,或查阅相关

如何通过Remoting实现双向通信

Remoting是NET平台下比较成熟高效的分布式技术,我们习惯采用传统的远程调用的方式使用Remoting.在客户端所在的Application Domain,我们通过Proxy(Transparent Proxy)远程地跨Application Domain调用一个方法.当来自Client端的调用请求通过Proxy到达Server端所在的Application Domain后,Remoting Infrastructure在Server 端激活(Activate)相应的远程对象(一个继承子S

我所理解的Remoting(1):Marshaling & Activation[上篇]

什么是Marshaling &Activation 对任何一项分布式技术(Distributed Technology),比如Remoting,XML Web Service,Enterprise Service,Marshaling和Activation(对于Marshaling,我实在是找不到一个比较贴切的中文短语来翻译,很多书把它翻译成封送,我总觉得很别扭,所以在这里我就直接用英文Marshaling,如果读者有较好的翻译,麻烦通知我一下)都是必须要解决的问题.本Blog主要讲述的是在Re

Remoting编程知识二

编程 Remoting高级知识 一. 如何使用IIS作为激活代理 .NET Remoting和DCOM之间的一个区别是前者不支持自动运行的服务器进程.需要人工启动服务器进程来注册用来远程激活的类和监听请求.而对于DCOM,当远程客户端调用CoCreateInstanceEx或者其他激活API时,会自动运行服务器进程. .NET remoting 提供了两种方法来避免人工启动服务器.第一个是将服务器应用程序当做一个服务来实现.可以编写一个从 System.ServiceProcess.Servic

客户端调用第三方remoting 服务程序的n中方式,VB.NET 晚期邦定还真方便

程序|客户端 写一个简单的Remoting 服务程序,HelloWorld:) 类函数: Public Class SimpleObjectClass SimpleObject Inherits System.MarshalByRefObject Public Function HelloWorld()Function HelloWorld(ByVal message As String) As String Return "Hello World" & message End

Remoting编程知识一

编程 Remoting基础 基本原理当客户端创建远程RemotableClass的一个实例,.NET框架在客户端应用程序域中产生一个代理.该代理看起来就像实际对象.代理收到调用后,通过通道连接到远程的对象. 一.编写步骤 第一步 编写一个DLL,其中包含所要Remottable的类 public class RemotableClass:MarshalByRefObject { -. } 第二步 服务器进程注册该remotable 类以便其他应用程序可以激活.根据该对象是如何激活,服务器通过两种

Remoting和Webservice的详细介绍及区别_实用技巧

Remoting和Webservice区别: 其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这样比Web Service稍为高效一些 2.Remoting不是标准,而Web Service是标准: 3.Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动. 4.在VS.net开