Asp.Net WebService 使用后来管理系统对接口方法进行公开控制
思路:
1、需要找一个访问Webservice的统一入口,刚开始进入了一个误区,以为WebService是单独的运行程序,后来经朋友提醒,其实它也是通过http请求在asp.net framework中的处理流程,所以就可以使用HttpModule作为统一入口,进行判断处理。
2、进入统一入口后,就需要获得访问Webservice的接口方法的名称,然后在网友提供的答案中:Request 的 RequestUri(GET)或 Headers(POST)来得到客户端请求的 WebMethod 名称,并参考一些文章,就实现获得接口方法的名称,就可以连接数据库进行判断处理了。
实现代码:
自定义一个HttpModule类,实现IHttpModule接口
/// <summary>
/// 验证调用的接口方法是否公开
/// </summary>
public sealed class WebServiceVerifyModule : IHttpModule
{
//销毁不再被HttpModule使用的资源
public void Dispose()
{
} //初始化一个Module,为捕获HttpRequest做准备
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(Application_BeginRequest);
} //处理请求的方法
public void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
HttpRequest request = application.Request;
string requestMethod = "";
if (request.UrlReferrer != null && !string.IsNullOrEmpty(request.UrlReferrer.AbsolutePath))
{
//web端调试即出期望结果
requestMethod = request.Url.AbsoluteUri.Split(new char[] { '/' }).Last();
}
else
{
//由winform client 调用 需要用此方法
if (request["HTTP_SOAPACTION"] != null)
{
requestMethod = request["HTTP_SOAPACTION"].Replace("\"", "").Split(new char[] { '/' }).Last(); }
} //连接数据库进行查询判断
if (!string.IsNullOrEmpty(requestMethod))
{
string sql = "select * from OPRT_APIINFO where F_METHOD='" + requestMethod + "'";
DataTable dt = DbHelperOra.Query(sql).Tables[];
if (dt.Rows.Count > )
{
string isOpen = dt.Rows[]["F_ISOPEN"].ToString();
if (isOpen != "")
{
application.CompleteRequest();
application.Context.Response.Write("{{\"result\":\"401\",\"接口方法未被公开!\":\"{1}\"}}");
}
}
}
}
}
在Web.Config中配置:
<system.web>
<httpModules>
<add name="WebServiceVerifyModule" type="WebServiceDemo.WebServiceVerifyModule"/>
</httpModules>
</system.web>
总结:
要解决一个问题,首先需要有一个思路,然后要熟悉一些相关的原理知识,这样解决问题时就会游刃有余。
参考文章:
.Net WebService中 如何从Request对象中获取请求的方法和传入参数
Asp.Net WebService 使用后来管理系统对接口方法进行公开控制的更多相关文章
- asp.net MVC webservice 报次错解决方法
asp.net MVC webservice 报次错解决方法: 解决方法: 在 RouteConfig.cs public static void RegisterRoutes(RouteCol ...
- jQuery Ajax 方法调用 Asp.Net WebService 以及调用aspx.cs中方法的详细例子
一.jQuery Ajax 方法调用 Asp.Net WebService (引自Terry Feng) Html文件 <!DOCTYPE html PUBLIC "-//W3C//D ...
- jQuery Ajax方法调用 Asp.Net WebService、WebMethod 的详细实例代码
将以下html存为ws.aspx <%@ Page Language="C#" AutoEventWireup="true" %> <scri ...
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...
- Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)
原文:Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇) 老话说的好:好记心不如烂笔头! 本着这原则,我把最近工作中遇到的jquery利用ajax调用web服务的 ...
- 在asp.net webservice中如何使用session
原文:在asp.net webservice中如何使用session 原文:刘武|在asp.net webservice中如何使用session 在使用asp.net编写webservice时,默认情 ...
- php soap调用asp.net webservice
原文:php soap调用asp.net webservice 首先做一下准备工作,找到安装环境里的php.ini把;extension=php_soap.dll去掉前面的;.我这里使用的是wamp, ...
- 经历:asp.net oracle 部署问题以及解决方法
原文:[原创]经历:asp.net oracle 部署问题以及解决方法 精简的美丽...... 一.环境 开发环境 win7 64bit Vs2010 ...
- 基于ASP.NET高职学生工作管理系统--文献随笔(八)
一.基本信息 标题:基于ASP.NET高职学生工作管理系统 时间:2015 出版源:电子科技大学 关键词:高职; 学生管理; ASP.NET; 系统; 二.研究背景 问题定义:随着社会的发展,我国经济 ...
随机推荐
- Macaca-iOS入门那些事2
Macaca-iOS入门那些事2 一. 前言 上文<Macaca-iOS入门那些事>讲到Macaca环境部署及运行了第一个案例,本文将讲解其案例编写. 二. 测试案例解析 iOS案例:ma ...
- ios UIView sizeToFit sizeThatFits
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 0, 0)]; testLabel.backgroundC ...
- MVVM架构~knockoutjs系列之验证成功提示显示
返回目录 对于knockout.validation来说,我们已经知道了如何去验证大部分表单元素,而有时,我们的需求希望在每个元素验证成功后,去显示正确的提示,这个我们很容易的使用self.元素.is ...
- Java程序员的日常 —— Java类加载中的顺序
之前说过Java中类的加载顺序,这次看完继承部分,就结合继承再来说说类的加载顺序. 继承的加载顺序 由于static块会在首次加载类的时候执行,因此下面的例子就是用static块来测试类的加载顺序. ...
- Liferay7 BPM门户开发之37: Liferay7下的OSGi Hook集成开发
hook开发是Liferay客制扩展的一种方式,比插件灵活,即可以扩展liferay门户,也能对原有特性进行更改,Liferay有许多内置的服务,比如用hook甚至可以覆盖Liferay服务. 可作为 ...
- JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
第二题 已知有十六支男子足球队参加2008 北京奥运会.写一个程序,把这16 支球队随机分为4 个组.采用List集合和随机数 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚 ...
- hdu3339 In Action(Dijkstra+01背包)
/* 题意:有 n 个站点(编号1...n),每一个站点都有一个能量值,为了不让这些能量值连接起来,要用 坦克占领这个站点!已知站点的 之间的距离,每个坦克从0点出发到某一个站点,1 unit dis ...
- Uvaoj 11624 - Fire!
/************************************************************************* > File Name: test.cpp ...
- 邻接表有向图(三)之 Java详解
前面分别介绍了邻接表有向图的C和C++实现,本文通过Java实现邻接表有向图. 目录 1. 邻接表有向图的介绍 2. 邻接表有向图的代码说明 3. 邻接表有向图的完整源码 转载请注明出处:http:/ ...
- 轻松自动化---selenium-webdriver(python) (十)
本节重点 处理下拉框 switch_to_alert() accept() 下拉框是我们最常见的一种页面元素,对于一般的元素,我们只需要一次就定位,但下拉框里的内容需要进行两次定位,先定位到下拉框,再 ...