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<ConcurrentDictionary<String, Type>> _ServiceLazy = new Lazy<ConcurrentDictionary<string, Type>>(() => {
var dic = new ConcurrentDictionary<String, Type>(); 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.") > && 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;
}
}
}
  void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
RouteTable.Routes.Add(new Route("{service}.hessian", new HessianRouteHandle()));
}
       private T GetHessionProxy<T>()
where T : class
{ var url = ServerUrl + typeof(T).FullName.Replace(".I", ".").Replace(".", "-").ToLower() + ".hessian";
return factory.Create(typeof(T), url) as T; }

asp.net Hessian 服务的注册的更多相关文章

  1. ASP.NET Core中的依赖注入(3): 服务的注册与提供

    在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core ...

  2. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  3. 转:无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    今天看到一篇文章感觉不错,收藏转载下. 原文地址:http://blog.csdn.net/sntyy/article/details/2090347 版权为原作者所有 无法向会话状态服务器发出会话状 ...

  4. 无法向会话状态服务器发出会话状态请求请。确保 ASP.NET State Service (ASP.NET 状态服务)已启动

    原文链接:http://www.cnblogs.com/IT-Bear/archive/2012/01/04/2311546.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET S ...

  5. 请确保 ASP.NET State Service (ASP.NET 状态服务)已启动 问题解决

    当iis部署的网站访问遇到如下错误时: 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如 ...

  6. 使用IIS服务器部署网页,需要开启服务里的“ASP.NET 状态服务”

    否则会提示“请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同.如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHI ...

  7. 从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建

    前面实现RMS系统时,我们让其直接访问底层数据库.后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层. 本章,我们先把hessia ...

  8. .net core学习笔记,组件篇:服务的注册与发现(Consul)初篇

    1.什么是服务注册中心? 在学习服务注册与发现时,我们要先搞明白到底什么是服务注册与发现. 在这里我举一个生活中非常普遍的例子——网购来简单说明,网购在我们日常生活中已经是非常普遍了,其实网购中的(商 ...

  9. .Net Core with 微服务 - Consul 注册中心

    上一次我们介绍了 Ocelot 网关的基本用法.这次我们开始介绍服务注册发现组件 Consul 的简单使用方法. 服务注册发现 首先先让我们回顾下服务注册发现的概念. 在实施微服务之后,我们的调用都变 ...

随机推荐

  1. Firemonkey 绘图 TPathData

    Firemonkey  TPathData TPath控件 procedure TForm12.FormPaint( Sender : TObject; Canvas : TCanvas; const ...

  2. 可视化库-seaborn-调色板(第五天)

    1. 基础的调色板的演示  color_palette() 设置传入的任何颜色,不传使用默认颜色,set_palette() 设置所有图的颜色# 6种主题 # 1 deep# 2 muted# 3 p ...

  3. python 之编写登陆接口

    基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时, ...

  4. 修改rabbitmq Web UI 监控页面的端口

    在前几天工作中遇到一个问题,部署服务器,需要用rabbitmq自带的一个web UI监控组件,但是15672的端口没有对外映射.尝试了几种办法.开始修改rabbitmq.config,rabbitmq ...

  5. 多字段非连续模糊查询java实现

    工作需要,写了一个实现数据库多字段模糊查询的方法,背景是输入用户的信息,如用户的userid,姓名,拼音等,可以查出相关的用户 具体如下 1. 操作一张表,可以设置表前缀 2. 可以实现中文的不连续查 ...

  6. 状态图(Statechart Diagram)

    一.概念: 状态图用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移. 二.状态图的基本元素: 1.状态(State):指在对象的生命期中满足某些条件.执行某些活动或等待某 ...

  7. 练习:自己写一个容器ArrayList集合 一一数组综合练习2

    package cn.bjsxt.collection; /** * 自己实现一个ArrayList */ import java.util.ArrayList; import java.util.L ...

  8. es进行curl请求时报错:missing authentication token for REST request

    把host 修改一下即可 ELASTICSEARCH_HOST=http://user:password@URL:port

  9. Android中app卡顿原因分析示例

    在知乎回答了一个“为什么微博的app在iPhone比Android上流畅”的问题.后面部分是一个典型的动画卡顿的性能分析过程,因此帖在这里.有编程问题可以在这里交流.知乎链接. =========== ...

  10. Consul Session

    consul馆提供session机制,可用于构建分布式锁. session作为节点,健康检查和key/value数据之间的绑定层. 它们旨在提供粒度锁定,并受到“The Chubby Lock Ser ...