• ArcEngine编写WebService


    开发环境:Windows7旗舰版64bit、VisualStudio2008 With SP1、ArcEngine10.0、NetFrameWork4.0、IIS7和C#开发语言。

    背景:ArcEngine开发的分析功能同时在dotNet(CS)和Java(BS)中使用,在CS程序中运行正常,但是在BS运行下经常无法获得分析数据,因此想通过写一个WebService的方式进行解决。

    因为之前一直做成CS的东西,很少接触BS内容,完全从0写起,因此写起来遇到了不少问题、比较费事。

    下面记录下我写的大体过程,希望和我一样的新手可以用到,对于一些问题以及解决过程,将在以后进行说明。

    1、新建服务

    VS2008->新建->网站->Asp.Net Web 服务。

    clip_image002

    image

    2、编写WebService内部代码与代码调试

    打开Service1.asmx文件

    找到这一行

       1: [WebService(Namespace = "http://tempuri.org/")]

    把NameSpace的值改为  [WebService(Namespace = http://gisAnalysis.org/)]

    其中系统自带一个HelloWorld方法,方法之前添加[WebMethod]表示其为可以WEB调用的方法,之后用户可以根据自己的需要编写自己的AE代码。

    我自己编写了一个爆管分析的调用方法:

       1: [WebMethod]
       2: public string BrustPipeAnalysis(double x, double y)

    3、服务发布

    找到IIS默认目录(我电脑目录为“C:inetpubwwwroot”)找到需要发布的服务文件夹。将该文件夹拷贝到需要发布服务的机器的IIS默认目录下面。然后进入IIS:

    image

    通过添加网站,添加我们拷贝过来的网站即可。

    image

    点击确定即可添加网站,添加完成后可以通过右键->管理网站->浏览(或者在最左侧的浏览网站image)进行查看。如果正常则表示网站发布成功。

    如果页面存在错误,可以通过image进行相应的设置,可以在此修改应用程序池等。

    上面是在IIS7.0的情况下进行的,对于IIS6.0版本,还需要进行权限和共享、Web共享以及添加Everyone权限设置。

    imageimageimageimage

    可以直接在浏览网页上或者在调用程序进行服务测试,发布的服务可以直接在目录下修改其文件代码,修改后立即生效。

    4、服务调用

    新建一个调用程序工程。然后添加服务引用。

    imageimageimage

    点击添加web引用按钮,弹出添加web引用窗口。

    image

    输入地址后点击“前往”按钮,可以前往到该web引用进行查看,没有问题后输入自己的web引用名称点击“添加引用”进行添加即可。

    image

    调用说明:

       1: WebReference.Service myWeb =new WindowsFormsApplication.WebReference.Service();
       2: myWeb.InitializeLifetimeService();
       3: string strXml = myWeb.BrustPipeAnalysis(0, 0, true);

    原先返回值为DataSet,因为在WebService中无法使用其为返回类型,所以将其转化为Xml返回,返回后根据相应的方法将Xml重新转化为所需的DataSet即可。

    注意编写WebService,传递参数不能使IFeatureLayer、List等对象,如果存在这些对象要进行序列化与反序列化处理。同时因为是Java调用,所以在参数设置上不能使用ref、out等外部参数等。

     

    因为第一次接触因此不可避免的存在一些不足,可能在上面中存在错误或者存在更好的处理方式,如果有什么不当的地方还请大家给指正一下,在这里先谢过了!(*^__^*) 嘻嘻……

  • 相关阅读:
    破解 inode 校园网多网卡限制方法
    更改 eclipse的 workplace路径
    VMware Network Adapter VMnet1和VMnet8 未识别的网络的解决方法
    eclipse更改xml文件,txt文件,property文件等文件编辑器的字体设置
    Lua中数组全排序
    Lua尾调用
    C++ 调用Lua简单例子
    linux生成core dump
    vc获取系统日期
    C++培训第一天
  • 原文地址:https://www.cnblogs.com/Jingkunliu/p/3842070.html
Copyright © 2020-2023  润新知