C#调用C语言写的dll,并发布web服务
2014-08-12 12:48
507 查看
创建ashx文件:
32位dll放在C:\Windows\SysWOW64目录下,确保这个dll依赖的其他dll也在这个目录下
启用IIS7的32位兼容性
打开IIS管理器,点应用程序池
再点右边的"设置应用程序池默认设置"
再点启用32位应用程序,将false改成true
确定后就生效了
还有就是IIS用户要有对C:\temp目录的读写权限
还有就是要将.net和IIS关联起来在cmd下执行aspnet_regiis.exe –i
<%@ WebHandler Language="C#" Class="wgtochina" %> using System; using System.Web; using System.Runtime.InteropServices; public class wgtochina : IHttpHandler { [DllImport("casmapi.dll", EntryPoint = "wgtochina", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)] public static extern int do_wgtochina(int iFirst, int iProjType, int iZoneNum, double dCentMedian, double x, double y, ref double outX, ref double outY); public void ProcessRequest(HttpContext context) { int a = 99; double outX = 0; double outY = 0; try { int iFirst = System.Int32.Parse(context.Request.Params["iFirst"]); int iProjType = System.Int32.Parse(context.Request.Params["iProjType"]); int iZoneNum = System.Int32.Parse(context.Request.Params["iZoneNum"]); double dCentMedian = System.Double.Parse(context.Request.Params["dCentMedian"]); double x = System.Double.Parse(context.Request.Params["x"]); double y = System.Double.Parse(context.Request.Params["y"]); a = do_wgtochina(iFirst, iProjType, iZoneNum, dCentMedian, x, y, ref outX, ref outY); } catch (Exception ex) { context.Response.ContentType = "text/plain"; context.Response.Write(ex.ToString()); return; } string result = ""; switch (a) { case -1: result = "无授权"; break; case -2: result = "授权文件异常"; break; case -3: result = "授权文件过期"; break; case -4: result = "加密狗异常"; break; case 0: result = "输入参数异常"; break; case 1: result = "正常"; break; default: result = "未知错误"; break; } string json = "{\"status\":\"" + result + "\",\"outX\":" + outX + ",\"outY\":" + outY + "}"; context.Response.ContentType = "text/plain"; context.Response.Write(json); } public bool IsReusable { get { return false; } } }
32位dll放在C:\Windows\SysWOW64目录下,确保这个dll依赖的其他dll也在这个目录下
启用IIS7的32位兼容性
打开IIS管理器,点应用程序池
再点右边的"设置应用程序池默认设置"
再点启用32位应用程序,将false改成true
确定后就生效了
还有就是IIS用户要有对C:\temp目录的读写权限
还有就是要将.net和IIS关联起来在cmd下执行aspnet_regiis.exe –i
相关文章推荐
- C# 客户端调用web服务 wsdl转成dll调用
- [.NET][C#]dotNet使用WSE3.0调用java的web服务
- 使用C语言写DLL,在C#中调用
- C#调用Java端Web服务(CXF)时发生Integer参数类型无法传递的问题
- C#动态调用Web服务的3种方法
- C#动态调用Web服务的3种方法
- delphi调用C#写的web服务例子-----------(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocu
- 调用C#写的Web服务, 怎么老是出现错误
- C# WebService发布与调用方法(转)
- C#动态调用Web服务的3种方法
- 使用 HttpWebRequest 类调用 WEB 服务的示例(C#) 转
- windows服务的托管资源(C#) 静态调用 非托管资源(Delphi-dll) 开机造成无法进入桌面(一)
- (.net)C#动态调用Web服务的几种方法
- delphi调用C#写的web服务例子-----------(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);)
- C# webservice服务在Delphi中的调用问题
- 使用 HttpWebRequest 类调用 WEB 服务的示例(C#) 转
- delphi调用C#写的web服务例子
- C#如何动态调用Web服务
- C#动态调用Web服务的3种方法
- delphi调用C#写的web服务