ArcEngine编写WebService

Posted on   云起  阅读(2)  评论(0编辑  收藏  举报  

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

bubuko.com,布布扣

bubuko.com,布布扣

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:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

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

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

bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣

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

4、服务调用

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

bubuko.com,布布扣bubuko.com,布布扣bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

调用说明:

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

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

随笔 - 119, 文章 - 0, 评论 - 3, 阅读 - 4066

Copyright © 2025 云起
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示