开发环境: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 服务。

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:\inetpub\wwwroot”)找到需要发布的服务文件夹。将该文件夹拷贝到需要发布服务的机器的IIS默认目录下面。然后进入IIS:

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

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

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

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

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

4、服务调用

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

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

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

调用说明:

   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等外部参数等。

 

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

ArcEngine编写WebService的更多相关文章

  1. Delphi编写WebService体会

    源:Delphi编写WebService体会 Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口 TReomtable: WebService中自定义类都是继承自该 ...

  2. ColdFusion 编写WebService 示例

    1.开发 Web Services,编写cfcdemo.cfc组件,代码如下: <cfcomponent style ="document" namespace = &quo ...

  3. 使用Axis2编写webservice客户端,服务端

    1.编写客户端 Axis2开发WebService客户端 的3种方式 [参考帖子] http://blog.csdn.net/wangjinwei6912/article/details/851259 ...

  4. 使用loadrunner编写webservice接口请求

    1.使用工具: loadrunner12,本实例截图中都是loadrunner12工具 2.操作步骤: 1).新建脚本,选择Web Services协议: 2).选择工具栏: 3).点击Import, ...

  5. LR编写webservice协议接口

    转自:http://lovesoo.org/use-loadrunner-call-webservice-interface-testing-optimization-summary.html 本文主 ...

  6. VS2010编写WebService与在IIS的发布<之简单讲解>

    工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...

  7. JAX-WS编写webservice

    1.新建一个Java工程 2.创建要发布的类 package com.linjian.webservice; import javax.jws.WebMethod; import javax.jws. ...

  8. python编写webservice接口

    1.pip install suds-jurko 2.pip install client #coding=utf-8 from suds.client import Client class Web ...

  9. WebService未能加载文件或程序集“ESRI.ArcGIS.XXX”或它的某一个依赖项

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

随机推荐

  1. Python 3 条件、循环和assert、pass、del

    条件: if 条件:     语句块 elif:     语句块 else:     语句块 elif 表示 else if 这居然是合法的!!!1 < x < 2!!! >> ...

  2. 网站tomcat配置

    <?xml version='1.0' encoding='utf-8'?> <!-- Licensed to the Apache Software Foundation (ASF ...

  3. CenOS 7 安装mysql

    1:安装YUM源 2:利用file zilla 将mysql文件拖放到 /var/opt  目录下 3:在centos当中,已经将mysql的文件放到了 /var/opt  我们只需要安装就可以 安装 ...

  4. [Spring] - 读写分离

    使用Spring可以做到在应用层中实现数据库的读写分离. 参考文档: http://blog.csdn.net/lifuxiangcaohui/article/details/7280202 思路是使 ...

  5. WCF:没有终结点在侦听可以接受消息的*这通常是由于不正确的地址或者 SOAP操作导致的。

    没有终结点在侦听可以接受消息的 http://xx.com/WebService.svc. 这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以 ...

  6. HTML5外包

    北京动点飞扬软件 从事html5外包业务五年,是国内第一家以HTML5移动平台.手机平台项目外包业务为主的正规软件团队, 欢迎联系 QQ:372900288 电话:13911652504 我们现已发展 ...

  7. linux下nginx服务器域名指定目录

    一般,域名指定ip之后,需要在ip所在的机器去指定相应站点的目录,否则域名会不起作用: 下面说说linux下的nginx服务器指定目录的细节: 域名绑定目录的配置文件都放到这里: /usr/local ...

  8. 基于adt-bundle-windows-x86的android开发环境搭建

    0,简介: 最近简单着手了解 android 开发.工欲善其事,必先利其器. 我本人不太喜欢使用java 开发,所以简单了解了下其 c# c++都可以进行android 开发,用c++的话要使用NDK ...

  9. Linux下date命令,格式化输出,时间设置

    date命令的帮助信息 [root@localhost source]# date --help用法:date [选项]... [+格式] 或:date [-u|--utc|--universal] ...

  10. yield个人理解及简明示例

    1.写法有2种:yield return <expression>和yield breakyield用于在迭代中返回一个值,并将值带入下一次迭代中.yield break则意味着停止迭代. ...