64位的windows操作系统上运行32位asp.net web应用程序的时候,出现试图加载格式不正确的程序的解决方法
这个是64位应用32位产生的问题。相信大家搜索的时候很多都是建议改把项目的AnyCPU改成X86,可是很不幸我的改不了。
终于搜索了半天后发现,IIS里解决才是根本办法:
1.生成时选择AnyCPU。
2.在IIS配置里面启用32位应用程序。
其中启用32位应用程序的方法如图:
2、将webservice发布到IIS
我们发布WebService的方法有两种,一种是通过VS可视化发布,还有一种是通过IIS配置发布。
1)我们右键单击WebService项目,选择发布,如下图:
路径我选择的是发布网站默认的路径,就是C:/inetpub/wwwroot/,然后我给它一个文件夹Web
点击确定后,状态栏给出发布结果信息。
2)如果上一步不成功,我们必须手动发布,首先检查你的IIS安装没有,控制面板->所有控制面板项->管理工具,如果没有IIS的话需要添加,这里不再赘述,百度上有方法。
将这几个文件放入一个文件夹中,记录物理路径(例如E:\C#\webpublish\WebService1)准备发布:
打开IIS,右键单击网站,选择添加网站。
网站名称任意(test2)
物理路径选择刚才的文件夹E:\C#\webpublish\WebService1
注意关键来了,这一步关系着wince能够访问主机发布的webservice,IP地址选择主机的IP地址(因为IP地址10.25.71.57我之前已经给test2了,所以test3我分配IP地址为169.254.2.2,同一个IP地址不能同时用于两个同样目录的网站),并分配端口号。
点击链接,选择特定用户,设置为你Window登录名和密码,如图:
设置完毕后可以测试设置,第二项windows授权可以通过。
然后为IIS虚拟目录创建单独的应用程序,方法是右键虚拟目录点击“添加应用程序...”,目录与刚才的虚拟目录物理路径要一致。
3、检查webservice是否发布成功
如果浏览器打开的网址是http://169.254.2.2/test3/Service1.asmx红色方框内的IP地址与之前选择的主机IP地址一样(无端口号),那么网站已经发布成功,之后可以用wince访问了。
将localhost替换成你计算机的IP,然后才能在PDA中引用,否则WinCE对http://localhost/test3/Service1.asmx的解析将出现问题,很简单的问题。这样添加也会由于配置不正确而出现访问不了的问题!
4、wince上访问webservice
建立一个智能设备应用程序,添加Web引用,我这里用的是静态引用,没有用动态引用的原因是,试过网上的动态生成WebService引用的代码,效率远比静态引用要低很多,考虑终端设备资源的有限性,还是用的静态引用。建立好项目后在界面上添加一个button和datagrid控件,添加代码:
- private webSer.Service1 ws;
- private void FrmMain_Load(object sender, EventArgs e)
- {
- ws = new DeviceApplication1.webSer.Service1();
- }
- //webmethod直接返回dataset
- private void btnDataSet_Click(object sender, EventArgs e)
- {
- try
- {
- this.dtGrid.DataSource = null;
- DateTime dtBegin = DateTime.Now;
- DataSet ds = ws.GetDataSet();
- DateTime dtDown = DateTime.Now;
- this.dtGrid.DataSource = ds.Tables[0];
- MessageBox.Show(string.Format("下载耗时:{0},绑定数据耗时:{1},数据量:{2}",
- dtDown - dtBegin, DateTime.Now - dtDown, ds.GetXml().Length));
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- }
- }