RemotingIIS承载方式

ASP.NET前后端用户安全管理技术全解析 本文系统介绍ASP.NET Core中用户管理的核心技术,涵盖注册登录、密码加密(PBKDF2)、JWT身份认证及AccessToken/RefreshToken机制。通过轻量级Web API项目演示,强调安全实践:密码明文不存储,使用加盐哈希;登录后生成带有效期的JWT令牌,结合短时效AccessToken与安全存储的RefreshToken实现无状态身份验证,提升系统安全性与用户体验。 阅读详情
这里来说一下iis承载方式,顺便简单说一下remoting的通道和【复杂对象】中的遗留问题。

首先明确一点:iis来承载的话只能是http通道方式的。

我们来建立一个web项目,比如叫remoting,删除项目中的所有webform,把远程对象dll-RemoteObject.dll复制到项目的dll文件夹下面,然后打开web.config进行服务端设置:
< configuration >
    
< appSettings >
            
< add  key ="strconn"  value ="server=(local);uid=sa;pwd=;database=UBISOFT"   />
    
</ appSettings >
    
< system .runtime.remoting >
        
< application >
            
< service >
                
< wellknown  type ="RemoteObject.MyObject,RemoteObject"  objectUri ="MyObject.soap"
                    mode
="SingleCall"   />
            
</ service >     
            
< channels >
                
< channel  ref ="http" />
            
</ channels >     
        
</ application >
    
</ system.runtime.remoting >
</ configuration >

来分析一下这个config:
1、可能大家还不是很理解type属性,其实type属性分两部分<命名空间.类名>,<程序集>
2、objectURi是用来表示对象的uri的,到时候我们用这个uri来连接到服务端
3、我们需要为uri指定soap(soap格式化)或者rem(二进制格式化)后缀

要进行测试其实很简单,我们在浏览器输入:http://localhost/remoting/MyObject.soap?wsdl
进行测试,如果发生问题基本就是配置文件的问题或者对象dll没有正确复制到dll目录

接下来修改一下客户端的配置文件就可以了,主要是修改地址。

< configuration >
 
< appSettings >
 
< add  key ="ServiceURL"  value ="http://localhost/remoting/MyObject. soap"/>
 
</ appSettings >
</ configuration >

iis承载方式默认是80端口,我们不需要在端口上做任何设置。还需要注意到的是iis方式,我们使用这样的格式作为地址:
http://ip地址/虚拟目录/远程对象.soap

运行了客户端以后如果我们的数据量比较大的话,就算是本机我们也能感受到延迟,比tcp方式延迟厉害很多很多,其实http方式的remoting效率比webservice还要差,具体选择http方式的remoting还是webservice还是要看我们是不是对对象的状态有需求。

iis的部署也是自动启动服务的,还有一个优点就是可以结合iis的windows身份认证,这个参照一些iis的配置文章,这里就不说了。

下面还是要来看一下两种【通道】:
    默认情况下,HTTP 通道使用 SOAP 格式化程序,因此,如果客户端需要通过 Internet 访问对象,则可以使用 HTTP 通道。由于这种方法使用 HTTP,所以允许客户端通过防火墙远程访问 .NET 对象。将这些对象集成在 IIS 中,即可将其配置为 Web 服务对象。随后,客户端就可以读取这些对象的 WSDL 文件,以便使用 SOAP 与 Remoting 对象通信。
    默认情况下,TCP 通道使用二进制格式化程序。此格式化程序以二进制格式进行数据的序列化,并使用原始套接字在网络中传送数据。如果对象部署在受防火墙保护的封闭环境中,则此方法是理想的选择。该方法使用套接字在对象之间传递二进制数据,因此性能更好。由于它使用 TCP 通道来提供对象,因此具有在封闭环境中开销较小的优点。由于防火墙和配置问题,此方法不能在 Internet 上使用。

因此我们也需要更根据自己的需求来选择通道!看看remoting有这么多可以选择的方式:选择激活模式,选择通道,选择承载方式,如此多的选择给了我们灵活的同时也增加了理解remoting的难度。

msdn相关章节:http://msdn.microsoft.com/library/CHS/cpguide/html/cpconChannels.asp

最后说一下前面的遗留问题,为什么会发生这个安全异常?
http://www.cnblogs.com/lovecherry/archive/2005/05/20/159335.html

msdn说:
依赖于运行时类型验证的远程处理系统必须反序列化一个远程流,然后才能开始使用它,未经授权的客户端可能会试图利用反序列化这一时机。为了免受这种攻击,.NET 远程处理提供了两个自动反序列化级别:Low 和 Full。Low(默认值)防止反序列化攻击的方式是,在反序列化时,只处理与最基本的远程处理功能关联的类型,如自动反序列化远程处理基础结构类型、有限的系统实现类型集和基本的自定义类型集。Full 反序列化级别支持远程处理在所有情况下支持的所有自动反序列化类型。

我们首先来修改服务端的配置文件:

< configuration >
    
< system .runtime.remoting >
        
< application  name ="RemoteServer" >
            
< service >
                
< wellknown  type ="RemoteObject.MyObject,RemoteObject"  objectUri ="RemoteObject.MyObject"
                    mode
="Singleton"   />
            
</ service >
            
< channels >
                
< channel  ref ="tcp"  port ="9999" />
                
< serverProviders >  
                    
< provider  ref ="wsdl"   />
                    
< formatter  ref ="soap"  typeFilterLevel ="Full"   />
                    
< formatter  ref ="binary"  typeFilterLevel ="Full"   />
                    
</ serverProviders >
            
</ channels >
        
</ application >
    
</ system.runtime.remoting >
</ configuration >

当然也可以用程序进行设置:
using  System;
using  System.Collections;
using  System.Runtime.Remoting;
using  System.Runtime.Remoting.Channels;
using  System.Runtime.Remoting.Channels.Tcp;
using  System.Runtime.Serialization.Formatters;

RemotingConfiguration.RegisterWellKnownServiceType( typeof (RemoteObject.MyObject),  " RemoteObject.MyObject " , WellKnownObjectMode.Singleton);
            BinaryServerFormatterSinkProvider serverProvider 
=   new  BinaryServerFormatterSinkProvider(); 
            BinaryClientFormatterSinkProvider clientProvider 
=   new  BinaryClientFormatterSinkProvider(); 
            serverProvider.TypeFilterLevel 
=  TypeFilterLevel.Full; 
            IDictionary props 
=   new  Hashtable(); 
            props[
" port " ]  =   9999 ; 
            TcpChannel channel 
=   new  TcpChannel(props,clientProvider,serverProvider); 
            ChannelServices.RegisterChannel(channel); 
            Console.ReadLine();

客户端还要用程序进行调整:
若要使用配置文件设置反序列化级别,必须显式指定 <formatter> 元素的 typeFilterLevel 属性。虽然这通常是在服务器端指定的, 但您还必须为注册来侦听回调的客户端上的任何信道指定这一属性,以控制其反序列化级别

在程序前面加上和服务端基本相同的代码:
BinaryServerFormatterSinkProvider serverProvider  =   new  BinaryServerFormatterSinkProvider(); 
            BinaryClientFormatterSinkProvider clientProvider 
=   new  BinaryClientFormatterSinkProvider(); 
            serverProvider.TypeFilterLevel 
=  TypeFilterLevel.Full; 
            IDictionary props 
=   new  Hashtable(); 
            props[
" port " ]  =   0 ; 
            TcpChannel channel 
=   new  TcpChannel(props,clientProvider,serverProvider); 
            ChannelServices.RegisterChannel(channel); 

这样就可以了,注意:如果在同一个机器上面测试端口号应设为不同于服务器端设置的端口号,推荐设置为0(远程处理系统自动选择可用端口)

.NET Remoting 自身不提供安全模型。然而,通过将远程对象驻留在 ASP.NET 中并使用 HTTP 通道进行通信,远程对象可以使用 IIS 和 ASP.NET 提供的基本安全服务。比较而言,TCP 通道和自定义的主机可执行文件能够提供更高的性能,但这种组合不提供内置的安全功能。

• 若要对客户端进行身份验证,请使用 HTTP 通道,在 ASP.NET 中驻留对象,以及在 IIS 中禁用匿名访问。
 
• 如果您不担心客户端身份验证问题,请使用 TCP 通道,它可以提供更高的性能。
 
• 如果您使用 TCP 通道,请使用 IPSec 保护客户端和服务器之间的通信通道。使用 SSL 来保护 HTTP 通道。
 
• 如果您需要对远程资源进行受信任的调用,请将组件驻留在 Windows 服务中,而不是驻留在控制台应用程序中。
 
• 始终不要向 Internet 公开远程对象。在这种情况下,请使用 Web 服务。
应该仅在 Intranet 中使用 .NET Remoting。应该使用内部方式从 Web 应用程序访问对象。即使对象驻留在 ASP.NET 中,也不要向 Internet 客户端公开它们,因为客户端必须是 .NET 客户端。

最后,让我们来看一篇msdn有关remoting安全的文章:
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/BuildSucApp/BSAAsecmod11.mspx
说到这里大家可能对remoting的一些基本知识稍微优点概念了,后续文章会继续不断强化这些概念!

remoting宿主到IIS中 remoting寄宿到IIS中,有些特别的优势,如: 1:可以借助于IIS的安全机制; 2:在硬件环境不允许的情况下,和IIS共用端口。 本程序,服务器采用IIS,客户端为一个console,演示了remoting如果宿主到IIS中。详细请看http://blog.csdn.net/luminji/archive/2010/05/25/5622381.aspx 立即下载

相关推荐

C# .Net Remoting 部署在IIS上的实例

将.Net Remoting发布到IIS上的实例。 建议先看一下配置步骤:http://www.our-code.com/news/2010107/n6231154.html 开发环境:VS2005 C#

HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。

应用程序“ICP”中的服务器错误 Internet Information Services 7.5 错误摘要 HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。 详细错误信息 模块 StaticFileModule 通知

叮咚侠的博客 1万+

IISHostRemoting(使用IIS作为Remoting服务器的宿主)

Remoting架构在很多设计中都会采用。常用的Remoting宿主往往是Console,Windows服务。而用IIS作为宿主的情况并不多。前一段时间思考分布式系统的缓存设计时,考虑到使用多个Web应用程序(甚至包括Console,WinForm程序)一起共享数据的实现,就想到了使用Remoting的架构。Remoting服务器可以被所有类型的前端程序访问,所以能实现数据的共享。在大型分布式系统架构中,使用Session存储数据有时并不方便,而使用Remoting架构实现,则非常不错。当然,这个例子并不是讲述如何实现这个数据共享服务器的,而是一个非常简单的使用IIS作为Remoting服务器宿主的例子。呵呵。

IIS上添加处理程序映射wfastcgi

网上关于IIS部署Django的教程中,添加wfastcgi部分通常只讲如何操作,不讲为什么这样操作,导致个性化的情况不知道如何修改、修改后会有什么后果。一番研究后,做了一些整理。(此文仅包含wfastcgi配置,未包含appSettings等内容) IIS上添加处理程序映射有多种方式,任选一种即可,例如: 1、通过pipinstallwfastcgi安装好wfastcgi后,执行wfastcgi-enable。完成IIS全局的映射配置。 2、在网站目录下添加 / 编辑 web.co...

bigcarp的专栏 9026

Remoting 实现IIS与CS应用程序通信

在IIS中采用静态类方式实现,缓存一个Remoting连接信道。 具体请看App_Code目录下的Remoting.cs文件。 1.先进行CS应用程序中的运行文件。 2.打开网页测试即可,网页向静态类取数据。 注意:Remoting 的连接地址。

ADS谐波平衡仿真自动优化报错?三步搞定HB控件设置(附常见错误排查)

本文针对ADS谐波平衡仿真在自动优化中常见的报错问题,提供了三步核心排查法。首先检查并禁用HB控件中可能导致冲突的小信号仿真模式,其次合理化仿真频率与扫描参数设置,最后审视优化变量与目标的定义。通过精准配置HB控件以适配自动优化流程,能有效解决大多数仿真失败问题,确保非线性电路设计顺利进行。

c2d3e4f的博客 792

asp.net web应用程序问题

1.问题:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。 详细错误信息 模块 StaticFileModule 通知 ExecuteRequestHandler 处理程序 StaticFile 错误代码 0x80070032 请求的 URL http://local

linzhuzui的专栏 1645

从特斯拉到蔚来:拆解主流智能汽车的车联网架构,看它们如何实现‘车、路、云’协同

本文深度解析了特斯拉、蔚来等主流智能汽车的车联网架构,详细拆解了其‘车、路、云’协同的技术实现。从车内网络、车际通信到云端协同,分析了通信技术、系统架构等关键技术选择,揭示了不同厂商如何通过差异化布局构建竞争优势。

weixin_42525289的博客 580

iis7 iis8 system.webServer/modules、system.webServer/handlers 锁定解锁命令

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

CyrusZhou的专栏 3765

Speedtree学习笔记(案例)——拥有多种材质的植物如何导入使用(以草为例)

注:Speedtree无论保存还是导入模型其存储路径不可有中文。 第一步拆分草的模型 根据所需的材质去拆分(例:假若草的果实,茎秆和叶子是不同的材质那么就需拆分为三份;假若画的全部颜色及材质一样就没有必要去拆分模型) 第二步导入草的模型 在Mesh面板中依次导入草的模型——Do nothing additional right now 第三步扩大草的生长区域范围(可省略)...

L人青的博客 5722

ANSYS/ANSYS Workbench生成mnf文件导入到Adams相关问题浅显解释

ANSYS/ANSYS Workbench生成mnf文件导入到Adams相关问题浅显解释。

weixin_45551870的博客 6987

IIS7.0 部署wcf 404或者配置MIME(转)

WCF部署在IIS下,报错如下: 应用程序“DEFAULT WEB SITE/IMF”中的服务器错误 Internet 信息服务 7.0 错误摘要 HTTP 错误 404.3 - Not Found由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。 详细错误信息StaticFileModuleExecuteRequestHa...

weixin_34115824的博客 217

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

蜗牛的专栏 3435

VS报错:HTTP Error 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

HTTP Error 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。 最可能的原因: 此应用程序在 system.web/httpHandlers 节中定义配置。 可尝试的操作: 将配置迁移到 system.webServer/handlers 节。也可以手动这样做,或

橙-极纪元-JJYCheng 4223

Keil5安装包别乱下!手把手教你从官网精准下载C51/V960和MDK5,并完成2032年有效注册(避坑网络资源失效)

本文详细介绍了如何从Keil官网安全下载C51 V9.60和MDK5开发环境,并提供2032年有效注册的完整指南。通过验证安装包完整性、自定义安装路径和长期激活方案,帮助开发者避开网络资源陷阱,搭建稳定的STM32开发环境。

weixin_26886855的博客 540

10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用

虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。

智能AI让学术科研更容易 1248

(原创)一步一步学Remoting之四:承载方式(2)

                                                       一步一步学Remoting之四:承载方式(2)  这里来说一下iis承载方式,顺便简单说一下remoting的通道和【复杂对象】中的遗留问题。首先明确一点:iis来承载的话只能是http通道方式的。我们来建立一个web项目,比如叫remoting,删除项目中的所有webform,

540

合肥工业大学操作系统实验9

依据操作系统课程所介绍的页面置换算法与动态内存分配的原理,本实验的目的是掌握OPT、FIFO、LRU、LFU、Clock等页面置换算法;掌握可用空间表及分配方法;掌握边界标识法以及伙伴系统的内存分配方法和回收方法。从而深入理解操作系统的内存管理。从而加深对教材上页面置换算法与动态内存分配的理解。

Martin-share的博客 1096

Remoting技术的应用

根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题。 为了解决双方的通信问题,还要考虑效率、性能等方面,经过分析、试验,我们根据效率、移植、开发难易等几个因素,舍弃了一开始提出的WebService、消息队列机制,以及有人建议的基于流I/O自己解析数据的通信方式,在分析了目前主流的RPC方式(DCOM、CORB...

weixin_30488313的博客 538

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Remoting服务集成到IIS的简单总结

因为项目的Remoting服务有可能集成到IIS中,所以下午利用一些时间,做了一个例子,实现了需要的功能,代码就凑合一下。 现在把这个过程总结一下: 1. 创建远程对象类Class1,它实现一个接口Interface1 public class Class1 : MarshalByRefObject, Interface1 { #reg...

weixin_33924312的博客 171

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Remoting IIS 发布

1.创建类库项目.using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ClassLibrary1{    public class Class1 : MarshalByRefObject,Interface1    {        #region Interface1 Members        public string SendMessage(string msg)  

Sky的专栏 1942

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: Remoting的承载方式是这样的
下一篇: Remoting之异步操作模式
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值