黎波

Windows Mobile Development for Line of Business
posts - 185, comments - 1253, trackbacks - 43, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

1. Web Service 和 SOAP

XML Web Service 是通过 SOAP(简单对象访问协议)协议进行通信的,而 SOAP 消息是利用 XML 进行描述的。使用 XML 描述 SOAP 消息的好处是使得 Web Service 可以跨平台调用,成就了 Web Service 的巨大魅力。(关于 Web Service 的介绍请看《XML Web Service 基础》

由于 SOAP 消息是用 XML 进行描述的,如果需要通过 Web Service 传输二进制数据,就必须在传输之前,将二进制数据转换成 Base64 编码的字符串,数据传送到了接收方后,再将 Base64 编码的字符串还原为二进制数据。这样产生了一个问题,经过 Base64 编码后,二进制数据的体积会膨胀,从而影响了数据传输的性能。

2. WSE 和 WS-Attachment

为了解决这个问题,微软在 Web Service Enhancements (WSE) 中实现了 WS-Attachment 规范,从而避免了在 Web Service 传输二进制数据时,需要对二进制数据进行 Base64 编码/解码处理。WS-Attachment 的工作原理是将二进制数据作为 SOAP 消息的附件(类似邮件的附件),而不作为 SOAP 消息的内容进行发送。这样可以避免对二进制数据进行 XML 序列化(XML 序列化过程中会对二进制数据进行 Base64 编码),因为序列化的只是 SOAP 消息的内容。(关于如何使用 WSE 附件请看《Using Web Services Enhancements to Send SOAP Messages with Attachments》

微软发布的 WSE 只支持桌面平台的 .NET Framework,不支持智能设备平台的 .NET Comapct Framework。如果你想在 Windows Mobile 或 Windows CE 平台上使用 WS-Attachment 传输二进制数据,那就要使用 OpenNETCF SDF 库了。OpenNETCF SDF 实现了 WSE2 里面大部分的 WS-* 规范,其中包括 WS-Attachment。为 .NET CF 平台实现这些 WS-* 规范的并非 OpenNETCF,而是 brains-N-brawn。在 OpenNETCF v1.2 之后才加入这部分功能。

3. 在 Windows Mobile 使用 WS-Attachment

我们将通过构建一个上传和下载文件的应用来展示 WS-Attachment 在 Windows Mobile 上如何使用。构建这个应用我们需要实现一个服务器端和一个客户端。服务器端也就是 Web Service 端,可以采用 WSE2 SP3 实现 WS-Attachment;客户端也就是 Windows Mobile 端,采用 OpenNETCF v2.0 实现 WS-Attachment。我们使用 Visual Studio 2005 SP1 开发这个应用。

说到这里,可能对 WSE 比较熟悉的朋友就有疑问了:既然使用 Visual Studio 2005 开发,为什么不用最新的基于 .NET 2.0 的 WSE3,而使用基于 .NET 1.1 的 WSE2 呢?那是因为 WSE3 已经用一种更好的技术代替 WS-Attchment 了,那就是 MTOM。我也很不理解微软为什么不在 WSE3 中保留 WS-Attachment,而是直接用 MTOM 将它替换掉。不过庆幸的是 WSE2 SP3 在 Visual Studio 2005 中依然能够正常工作。

3.1 创建服务器端

1) 打开 Visual Studio 2005,新建一个“ASP.NET Web 服务应用程序”项目,命名为“WSAttachmentService”。如果你找不到这个项目模版,是因为你没有安装 Visual Studio 2005 SP1。

2) 为 WSAttachmentService 项目添加引用,在添加引用对话框的 .NET 选项卡中,选择 Microsoft.Web.Service2 (C:\Program Files\Microsoft WSE\v2.0\Microsoft.Web.Services2.dll),并点击确定

3) 打开 Web.config 文件,添加如下配置项:

<system.web>
  
<webServices>
    
<soapExtensionTypes>
      
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" priority="1" group="0"/>
    
</soapExtensionTypes>
  
</webServices>
</system.web>


4) 打开 Service1.asmx.cs 进行代码编辑,删除默认的 HelloWorld() Web 方法,并引用3个命名空间。

using System.IO;
using Microsoft.Web.Services2;
using Microsoft.Web.Services2.Dime;


5) 添加一个用于下载文件的 Web 方法 DownloadFile()。

[WebMethod]
public void DownloadFile()
{
  SoapContext respContext 
= ResponseSoapContext.Current;
  DimeAttachment dimeAttach 
= new DimeAttachment(
    
"image/jpg", TypeFormat.MediaType, Server.MapPath("img01.jpg"));
  respContext.Attachments.Add(dimeAttach);
}


6) 再添加一个用于上传文件的 Web 方法 UploadFile()。

[WebMethod]
public void UploadFile()
{
  SoapContext reqContext 
= RequestSoapContext.Current; 

  
byte[] buffer;
  
using (Stream stream = reqContext.Attachments[0].Stream)
  {
    buffer 
= new byte[stream.Length];
    stream.Read(buffer, 
0, buffer.Length);
  } 

  
// 将数据写入磁盘文件中(需要设置相应权限)
  using (FileStream fileStream = File.OpenWrite(Server.MapPath("img02.jpg")))
  {
    fileStream.Write(buffer, 
0, buffer.Length);
  }


7) 设置 WSAttachmentService 目录的访问权限,为 Internet 来宾账户添加修改写入权限。



3.2 创建客户端

1) 在当前解决方案新建一个“Windows Mobile 5.0 Pocket PC”智能设备项目,命名为“WSAttachmentMobile”。

2) 打开 Form1.cs 的窗体设计界面,添加一个 PictureBox 控件(pictureBox1)到 Form1 上,再添加 Download 和 Upload 两个菜单项(mniDownload 和 mniUpload)。



3) 为项目添加引用,在添加引用对话框的 .NET 选项卡中,选择 OpenNETCF.Web.Service2 (C:\Program Files\OpenNETCF\Smart Device Framework 2.0\OpenNETCF.Web.Services2.dll),并点击确定

4) 为项目添加 Web 引用,在添加 Web 引用对话框中,输入 URL 地址:http://localhost/WSAttachmentService/Service.asmx,点击地址栏右边的前往按钮,确认 Web Service 是否能够打开,然后点击添加引用按钮。

5) 为项目添加一个类文件 DimeServWrap.cs,代码如下:

using System;
using System.Web.Services.Protocols;
using System.Web.Services.Description; 

using OpenNETCF.Web.Services2.Dime; 

namespace WSAttachmentMobile
{
  public class DimeServWrap : localhost.Service1, IDimeAttachmentContainer
  {
    public DimeServWrap() : base()
    {
      this.Url = "http://bjb-libo/WSAttachmentService/Service1.asmx"
   

    DimeAttachmentCollection requestAttachments;
    DimeAttachmentCollection responseAttachments; 

    // IDimeAttachmentContainer.RequestAttachments
    public DimeAttachmentCollection RequestAttachments 
   
      get 
      {
        if (requestAttachments == null
          requestAttachments 
= new DimeAttachmentCollection();
        return requestAttachments;
      }
    } 

    // IDimeAttachmentContainer.ResponseAttachments
    public DimeAttachmentCollection ResponseAttachments 
    { 
      get 
      {
        if (responseAttachments == null
          responseAttachments 
= new DimeAttachmentCollection();
        return responseAttachments;
      }
    } 

    [DimeExtension]
    [SoapDocumentMethod(
http://tempuri.org/DownloadFile, RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
    public new void DownloadFile()
    {
      this.Invoke("DownloadFile"new object[0]);
    } 

    [DimeExtension]
    [SoapDocumentMethod(
http://tempuri.org/UploadFile, RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
    public new void UploadFile()
    {
      this.Invoke("UploadFile"new object[0]);
    }
  }

DimeServWrap 类做了几件事:
a. 继承了 localhost.Service1 代理类
b. 实现了 OpenNETCF.Web.Services2.Dime.IDimeAttachmentContainer 接口
c. 设置了 Web Service 的 url 地址
d. 覆盖了基类的 DownloadFile() 和 UploadFile() 方法,并为两个方法都加上了 DimeExtension 属性

6) 打开 Form1.cs 代码进行编辑,并引用两个命名空间:

using System.IO;
using OpenNETCF.Web.Services2.Dime; 


7) 回到 Form1 的窗体设计界面,用鼠标双击 Download 菜单项,并未 mniDownload 添加 Click 事件的处理代码:

private void mniDownload_Click(object sender, EventArgs e)
{
  Cursor.Current 
= Cursors.WaitCursor; 

  DimeServWrap svc 
= new DimeServWrap();
  svc.DownloadFile(); 

  byte[] buffer;
  using (Stream stream = svc.ResponseAttachments[0].Stream)
  {
    buffer 
= new byte[stream.Length];
    stream.Read(buffer, 
0, buffer.Length);
    pictureBox1.Image 
= new Bitmap(stream);
  } 

  using (FileStream fileStream = File.OpenWrite("img01.jpg"))
  {
    fileStream.Write(buffer, 
0, buffer.Length);
  } 

  Cursor.Current 
= Cursors.Default; 

  MessageBox.Show(
"File was downloaded successful!");


8) 采用同样的方法为 mniUpload 添加 Click 事件的处理代码:

private void mniUpload_Click(object sender, EventArgs e)
{
  Cursor.Current 
= Cursors.WaitCursor; 

  using (FileStream fileStream = File.OpenRead("img01.jpg"))
  {
    DimeServWrap svc 
= new DimeServWrap();
    DimeAttachment dimeAttach 
= new DimeAttachment(
    "uuid:" + Guid.NewGuid().ToString("D"), "image/jpg",
    TypeFormatEnum.MediaType, fileStream);
    svc.RequestAttachments.Add(dimeAttach); 

    svc.UploadFile();
  } 

  Cursor.Current 
= Cursors.Default; 

  MessageBox.Show(
"File was uploaded successful!");


9) 到现在为止,所有代码已经编写好了,我们来看看解决方案的文件组织结构,检查一下是否有遗漏的地方:

3.3 调试程序

1) 从 Visual Studio 2005 的工具菜单打开“设备仿真器管理”,并连接 CHS Windows Mobile 5.0 Pocket PC Emulator(我这里使用的是简体中文版的设备仿真器镜像,你也可以使用英文版的),最后将其插入底座,使仿真器可以连接到 ActiveSync,这样我们的仿真器就能通过网络访问到桌面电脑的 Web Service 了。

2) 回到 Visual Studio 2005 中,并在设备工具栏选择 Windows Mobile 5.0 Pocket PC Device。

3) 接下来我们可以按 F5 键开始调试了,在部署过程中会安装 .NET Compact Framework 2.0 到仿真器中(如果还没有安装)。

4) 程序启动后,先点击 Download 菜单项,从服务器端下载一个图片文件,并显示在窗体上,同时将图片文件保存到设备上;接着点击 Upload 菜单项,从设备读取刚才下载的图片文件,并上传到服务器端,服务器端将其保存到根目录下。


4. 总结

在 Windows Mobile 应用程序中利用 WS-Attachment 传输二进制数据,可以减少数据传输量,提高数据传输速度,从而增强用户体验。特别是在 GPRS 和 CDMA 的低速网络条件下,如果再结合数据压缩技术,将会取得显著的效果。不过,如果在局域网的环境下,建议不要对数据进行压缩。因为局域网的网络速度足够快,传输大文件和小文件所需要的时间相差不多,而数据压缩则需要更多的时间,所以速度反而会更慢。毕竟 Windows Mobile 设备的硬件性能是无法跟桌面电脑相比。

示例代码下载:WSAttachmentMobile.rar

作者:黎波
博客:http://upto.cnblogs.com/
日期:2007年3月24日

Feedback

#1楼    回复  引用    

2007-03-24 19:33 by 罗斌 [未注册用户]
太好了,您真是我的偶像,我还在想如何实现呢?您就写出来了。向您致敬!!!


您和张欣老师一样历害!!!!

#2楼 [楼主]   回复  引用  查看    

2007-03-24 20:41 by Bob Li      
@罗斌
呵呵,我跟张欣比还差那么十万八千里!

#3楼    回复  引用  查看    

2007-03-28 20:51 by Leepy      
@Bob Li
最近关注你的blog,觉得你很牛!向你学习!

#4楼    回复  引用  查看    

2007-03-29 13:20 by Leepy      
请问,如果不用VS2005 SP1 可以进行该程序运行么?

#5楼 [楼主]   回复  引用  查看    

2007-03-29 13:29 by Bob Li      
@Leepy
不能直接打开项目,因为Web Service端是“ASP.NET Web服务应用程序”项目,这个是在VS2005 SP1增加的项目模版。如果没有SP1,就要自己修改为网站形式,然后发布到IIS进行客户端测试(据说VS2005内置的Web服务器不支持其他机器访问)。

#6楼    回复  引用  查看    

2007-03-29 13:53 by Leepy      
可是我没打SP1 补丁也含有"ASP.NET Web服务"项目啊,就是在"新建网站"中.
打开你的项目时然后提示"此安装不支持项目类型".
我可以自己在网站中重新创建个Web服务么?

#7楼 [楼主]   回复  引用  查看    

2007-03-29 14:13 by Bob Li      
@Leepy
不好意思,我刚才没有写清楚,现在修正了。
注意是应用程序哦,在新建项目里面,不在新建网站里面。

#8楼    回复  引用  查看    

2007-03-29 14:20 by Leepy      
好的,明白了,谢谢咯!

#9楼    回复  引用  查看    

2007-03-29 15:43 by Leepy      
我把它修改为网站形式的Web Service,好像不行啊.点下载的时候 提示"Could not establish connection to network"的异常

#10楼 [楼主]   回复  引用  查看    

2007-03-29 17:20 by Bob Li      
@Leepy
首先确保一下你有没有更新DimeServWrap类中的WebService地址;然后确保这个WebService地址能够在设备上的IE浏览器能够访问。

#11楼    回复  引用  查看    

2007-03-29 17:54 by Leepy      
我已经把我修改的web服务挂上IIS上了,名称为http://localhost/WSAttachmentService/Service.asmx,DimeServWrap类也改成this.Url = "http://localhost/WSAttachmentService/Service.asmx";的本地web服务了
我是用Mobile 5.0 Pocket PC 模拟器 打开IE的,但是WebService地址如你所说,确实不能访问.
怎么回事呢?要如何做吗?

#12楼 [楼主]   回复  引用  查看    

2007-03-29 18:41 by Bob Li      
@Leepy
其实PPC和PC是两台不同的计算机,它们是通过网络连接的,所以你应该通过PC的计算机名获IP地址来访问,而不是localhost(那等于访问PPC本身的Web服务器了)。
你可以发现我在DimeServWrap类的Url属性设置的并非localhost的地址,而是我的笔记本的计算机名bjb-libo。
另外要提醒的一点就是确保模拟器已经连接到ActiveSync,这样网络才是通的。

#13楼    回复  引用  查看    

2007-03-29 19:44 by Leepy      
哦,对哦!l如果是localhost变成是访问PPC本身的了,我再试试看!
模拟器我已经连接到ActiveSync了,PPC IE 可以访问到其他网站,这个没问题。
如果不行,我再请教!谢谢咯!:)

#14楼    回复  引用  查看    

2007-03-30 14:46 by Leepy      
搞定了!原来我漏掉了
<system.web>
<webServices>
<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" priority="1" group="0"/>
</soapExtensionTypes>
</webServices>
</system.web>
这些东西,然后产生了WebException异常-_-!!。
不过, web service 我是挂在固定IP的服务器上的!
如果web service 挂在自己电脑上, 模拟器IE访问不了我的机器,不知道为什么!

#15楼 [楼主]   回复  引用  查看    

2007-03-30 15:02 by Bob Li      
@Leepy
可能是ActiveSync的连接设置问题,尝试一下修改连接设置,在单位网络和Internet之间切换。这也是比较常见的问题。

#16楼    回复  引用  查看    

2007-03-30 15:31 by Leepy      
哈!可以了!
果然是连接设置的问题!改成单位网络就可以了!
老大,你太神咯!
我可以加你邮箱么,想跟你多多交流下Window Mobile上的问题!
我的是sunleepy@gmail.com

#17楼 [楼主]   回复  引用  查看    

2007-03-30 15:40 by Bob Li      
@Leepy
我的博客左边公告那里就有我的邮箱地址啦:D

#18楼    回复  引用    

2007-04-16 14:42 by 海 [未注册用户]
在Pocket Pc上怎么增加OpenNETCF.dll的引用?

#19楼 [楼主]   回复  引用  查看    

2007-04-16 18:25 by Bob Li      
@海
在这里可以找到下载地址:
http://www.cnblogs.com/upto/archive/2007/03/13/672953.aspx

#20楼    回复  引用    

2007-05-17 10:59 by Leo [未注册用户]
Hi Bob,
Your link (http://www.cnblogs.com/upto/archive/2007/03/13/wm-dev-tools-and-resources.html) does not work.
Could you please post another download address if exists?

Excellent article! BTW

Thanks,
Leo

#21楼 [楼主]   回复  引用  查看    

2007-05-17 11:09 by Bob Li      
@Leo
i have corrected the link. you can try it again.
I apologize for any inconvenience!

#22楼    回复  引用    

2007-06-17 14:20 by LittleQ [未注册用户]
请教一下这个例子我用新建网站->新建asp.net web service形式建立了一个连接,也引用了wse中东东,但是在mobile端调试的时候出现webException,请问是不是一定要用asp.net webservice应用程序才可以?用网站形式不行吗?

#23楼    回复  引用    

2007-06-17 14:45 by LittleQ [未注册用户]
在web.config中加上了<soapExtensionTypes>
<add type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2, Version=2.0.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" priority="1" group="0"/>
</soapExtensionTypes>
后,调试出现一下异常,不知道为什么,老大指导下

Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'

#24楼 [楼主]   回复  引用  查看    

2007-06-17 17:35 by Bob Li      
@LittleQ
首先确保你的WebService能够用IE打开浏览,印象中如果不用ASP.NET Web Service应用程序的话,mobile端可能访问不到,你可以自己试一试,或者需要部署到IIS之后mobile端才能访问到。

#25楼    回复  引用    

2007-07-29 20:15 by lzh [未注册用户]
请教一下,怎么固定下载路径比如我想下载d:\我的文件\图片1.jpg

#26楼 [楼主]   回复  引用  查看    

2007-07-30 20:59 by 黎波      
@lzh
把 DownloadFile WebMethod 中的 Server.MapPath("img01.jpg") 替换为相应的路径即可。

#27楼    回复  引用    

2007-08-02 12:51 by lzh [未注册用户]
@黎波
谢谢了,解决了。:-)

#28楼    回复  引用    

2007-08-07 19:18 by 李振 [未注册用户]
请教一下我固定目录为“d:\1.txt”下载的时候出现
system.web.services.protocols.soapexception 服务器物处理请求--->未找到路径 "d:\1.txt"的一部分
这是怎么回事啊

#29楼    回复  引用    

2007-08-07 19:52 by zero [未注册用户]
我固定目录没问题,就是一旦传给web services 一个路径就会出现楼上的的问题,这是怎么回事啊

#30楼 [楼主]   回复  引用  查看    

2007-08-07 22:54 by 黎波      
@李振
@zero
这个要看具体的代码,一般都是在WebService访问文件的时候出问题,跟WS-Attachment没有关系。

#31楼    回复  引用    

2007-08-08 12:59 by 李振 [未注册用户]
老师(不知能不能这样称呼您:-))您的意思是不是我在传参数或者文件访问权限出现了问题

#32楼    回复  引用    

2007-10-24 12:07 by liley [未注册用户]
你好,我想问个问题:是不是CE的程序比PC的会慢?现在在CE里做了个显示图片项目,因为图片是储存在PC上,所以要5秒才能显示出来,(被老板骂)但是我在winform实现却0.1秒左右就可以显示出来了。

请帮我解答。谢谢

#33楼 [楼主]   回复  引用  查看    

2007-10-24 21:21 by 黎波      
@liley
不是CE的程序比PC的慢,而是CE设备比PC设备慢。
你的图片放在PC上,你的CE程序是通过什么方式获取图片的?

#34楼    回复  引用    

2007-10-25 09:11 by liley [未注册用户]
图片是二进制储存在PC中,不过我现在是在虚拟机中测试,读内存流读图片。谢谢

#35楼 [楼主]   回复  引用  查看    

2007-10-25 09:19 by 黎波      
@liley
虚拟机=Device Emulator?版本多少?
设备仿真器的性能比真实设备要差一些。

#36楼    回复  引用  查看    

2008-04-18 13:42 by 朱正友      
你好.很高兴在你的blog上看到这么丰富的内容.
最近,我看了你的这篇文章:
在 Windows Mobile 使用 WS-Attachment 传输二进制数据
我现在的一个项目,也是要在Web Service 中传输图片信息.大概是4-6k这样的图片.
项目部署到pda上,用GPRS传输测试的结果很不理想.准备采用你提到的方法.可是用你的方法跑的时候,总是抛出 webException异常,提示:Unsupported Media Type
本来,我是抱着采用这个方法,可以把速度提高上来,现在又卡在这里了.
能给点意见吗?热情期待你解答.
谢谢

#37楼 [楼主]   回复  引用  查看    

2008-04-18 13:51 by 黎波      
@朱正友
DimeAttachment dimeAttach = new DimeAttachment(
"image/jpg", TypeFormat.MediaType, Server.MapPath("img01.jpg"));
应该是DimeAttachment构造函数的第一个参数设置有问题,请问你上传的是什么格式的图片。

#38楼    回复  引用    

2008-04-20 17:05 by gundam [未注册用户]
黎波老师,您好!
看了这篇文章之后,调试程序的时候总是出现"未处理的“System.Net.WebException”类型的异常出现在 System.Web.Services.dll 中。"
我看了上面的回复后,我也参照着修改了错误,比如ActiveSync的连接设置问题,
在DimeServWrap类的Url属性设置成了计算机名,但仍是出
现上面的错误,请问是什么问题?盼望您的指教

#39楼    回复  引用    

2008-04-20 22:32 by gundam [未注册用户]
我调试出来了,前面的评论对我的启发很大,谢谢各位,谢谢黎大师!

#40楼 [楼主]   回复  引用  查看    

2008-04-21 22:05 by 黎波      
@gundam
很高兴看到你能够自己解决了问题!

#41楼    回复  引用    

2008-04-29 15:25 by okfeng [未注册用户]
您好!

我在虚拟机上没有问题。当我把程序放到真实手机上时,该如何访问我本机上的WebService呢?在没有ActiveSync连接的情况下。
谢谢!

#42楼 [楼主]   回复  引用  查看    

2008-05-06 12:52 by 黎波      
@okfeng
可以通过Wifi网络或者GPRS/CDMA网络。

#43楼    回复  引用    

2008-05-28 03:18 by hua594481 [未注册用户]
很好的东西呀◎
我也在学Windows Mobile ,有C++版本的吗?

#44楼    回复  引用    

2008-06-18 16:47 by sunday0063 [未注册用户]
额滴神啊~可算找到一篇MOBILE传文件的文章了~
运行的时候遇到了几个问题

抛出异常 无法反射方法DownloadFile()。。 然后我把DimeServWrap.cs中DownloadFile()方法改了名字,程序倒是可以运行了,不过发现Service1.asmx.cs中的reqContext.Attachments个数时0 -_-!,在客户端svc.RequestAttachments.Add(dimeAttach);是加进去了的,不知道服务端为什么没取出来。我建的是 ASP.NET WEB服务 不是ASP.NET Web服务应用程序。请黎老师帮忙解答呀

#45楼    回复  引用    

2008-06-18 16:55 by sunday0063 [未注册用户]
上面写的都是上传文件的代码 DimeServWrap.cs中的UploadFile()方法也被我改了名字 要不也会抛出异常 无法反射方法

#46楼    回复  引用    

2008-06-18 16:57 by sunday0063 [未注册用户]
我在客户端调用的是DimeServWrap.cs中改了名字后的方法

#47楼 [楼主]   回复  引用  查看    

2008-06-21 11:45 by 黎波      
@hua594481
这个方法目前只能用.net来实现。

#48楼 [楼主]   回复  引用  查看    

2008-06-21 11:46 by 黎波      
@sunday0063
最好用ASP.NET Web服务应用程序试一试吧

#49楼    回复  引用    

2008-09-03 17:53 by bird-phenix [未注册用户]
LZ您好!
我用开发环境是VS2005+sp1,为什么我的服务器端程序找不到Microsoft.Web.Services2.dll这个DLL呢?

我的邮箱:xpengfee@163.com

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-03 02:20 编辑过


相关链接: