当前位置 : 主页 > 网页制作 > Nodejs >

解决wince与主机webservice的连接和访问问题?

来源:互联网 收集:自由互联 发布时间:2021-06-24
1、安装IIS、并注册,参考百度经验:http://jingyan.baidu.com/article/9f7e7ec0547ecf6f2815548f.html 64位的windows操作系统上运行32位asp.net web应用程序的时候,出现试图加载格式不正确的程序的解决方
1、安装IIS、并注册,参考百度经验:http://jingyan.baidu.com/article/9f7e7ec0547ecf6f2815548f.html

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控件,添加代码:

  1. private webSer.Service1 ws;
  2.         private void FrmMain_Load(object sender, EventArgs e)
  3.         {
  4.             ws = new DeviceApplication1.webSer.Service1();
  5.         }
  6.         //webmethod直接返回dataset
  7.         private void btnDataSet_Click(object sender, EventArgs e)
  8.         {
  9.             try
  10.             {
  11.                 this.dtGrid.DataSource = null;
  12.                 DateTime dtBegin = DateTime.Now;
  13.                 DataSet ds = ws.GetDataSet();
  14.                 DateTime dtDown = DateTime.Now;
  15.                 this.dtGrid.DataSource = ds.Tables[0];
  16.                 MessageBox.Show(string.Format("下载耗时:{0},绑定数据耗时:{1},数据量:{2}", 
  17.                     dtDown - dtBegin, DateTime.Now - dtDown, ds.GetXml().Length));
  18.             }
  19.             catch (Exception ex)
  20.             {
  21.                 MessageBox.Show(ex.ToString());
  22.             }
  23.         }
复制代码 连接好终端设备, 测试 点击按钮,几秒后DataGrid表格正确显示数据,OK,说明WinCE已经能够正确调用Web Service了。如果不能正确调用,检察WebService 发布 与Web引用是否正确,数据库配置是否正确。
网友评论