博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net Hessian 服务的注册
阅读量:5112 次
发布时间:2019-06-13

本文共 2361 字,大约阅读时间需要 7 分钟。

Hessian服务端实现了IHttpHandle,

默认情况下是在Web.Config中的handles接点中注册,这样当有 很多实现时比较麻烦

这个时候可以实现IHttpHandleFactory注册到Web.Config中,在Factory中实现对具体服务的实例化,

另外也可以使用RouteTable方式,自己实现以个IRouteHandle,注册到RouteTable的Routes表中,

需要注意的是,RouteTable方式在asp.net管线的位置靠前,会屏蔽掉后面的IHttphandle方式.

另外注意在IIS 6中,需要在IIS中添加对.hessian的印射(取消确认文件存在选择),而在IIS7.0中需要在Web.Config的Web.Server配置节里注册HttpHandle或HttpHandleFactory-如果采用的不是RouteTable方式的话

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Routing;using System.Collections.Concurrent;using System.Reflection;namespace PhoneAPI.Service{    public class HessianRouteHandle : IRouteHandler    {        private Lazy
> _ServiceLazy = new Lazy
>(() => { var dic = new ConcurrentDictionary
(); var assembly = Assembly.Load("F.Studio.Prime.Hessian"); //接口类完全限定名将".I"替换成".Impl." //F.Studio.Prime.Hessian.Impl.AccountService 转换后如下 //f-studio-prime-hessian-accountservice foreach (var type in assembly.GetTypes().ToList()) { if (type.FullName.IndexOf(".Impl.") > 0 && type.FullName.EndsWith("Service")) { var key = type.FullName.Replace(".Impl.", ".").Replace(".", "-").ToLower(); dic[key] = type; } } return dic; }, true); public IHttpHandler GetHttpHandler(RequestContext requestContext) { var service = requestContext.RouteData.Values["service"].ToString(); if (_ServiceLazy.Value.ContainsKey(service)) { return Activator.CreateInstance(_ServiceLazy.Value[service]) as IHttpHandler; } return null; } }}
View Code
void Application_Start(object sender, EventArgs e)        {            // 在应用程序启动时运行的代码            RouteTable.Routes.Add(new Route("{service}.hessian", new HessianRouteHandle()));        }
private T GetHessionProxy
() where T : class { var url = ServerUrl + typeof(T).FullName.Replace(".I", ".").Replace(".", "-").ToLower() + ".hessian"; return factory.Create(typeof(T), url) as T; }

 

转载于:https://www.cnblogs.com/wdfrog/p/4063036.html

你可能感兴趣的文章
【转】NoSQL小故事:单服务器如何应付每秒75万次查询(2)
查看>>
[Unity Shader] 3D模型的简单属性
查看>>
壁纸推荐2018
查看>>
JQuery对象转dom ,dom转jQuery
查看>>
jquery 异步请求
查看>>
2018-09-25
查看>>
微信小程序开发---小程序对接Django---6
查看>>
[mysql] mysql批量操作时性能优化
查看>>
jQuery下拉菜单
查看>>
python习题:对比两个字典内容哪里不一样 并把不 一样的key和value打印出来
查看>>
不定长数组:vector
查看>>
pig grunt shell详解
查看>>
hadoop Shell命令详解
查看>>
jquery判断输入框的字符串是否为空或者空格
查看>>
NYOJ-44 简单DP
查看>>
java Integer与int详解 01
查看>>
OpenCV探索之路(十一):轮廓查找和多边形包围轮廓
查看>>
【Python】使用socketserver建立一个异步TCP服务器
查看>>
[转] 面向对象设计原则
查看>>
AJAX-----03远古时期的ajax
查看>>