ASP.NET通过Remoting service上传文件

最近在因为在学习Remoting,纯粹只是了解一下,发现Remoting确实是好东西。

我们通常有三种方式来使用remoting,一种是

第一种:Publishing a public object
公开的对象创建在本地
第二种:Remote creation of a public object (SAO)
对象创建在客户端请求中
第三种:Remote creation of a private object (CAO)
对象创建在HOST上,客户端引用服务器上的对象

目次我也没有很好理解这三种的本质区别在哪里。而这三种方式的remoting创建方式也不相同。

第一种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
cTransfer Trans = new cTransfer();
RemotingServices.Marshal (Trans, "TestService");Client:
cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                 "tcp://host:1500/TestService");
第二种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
RemotingConfiguration.RegisterWellKnownServiceType(typeof(cTransfer),
    "TestService", WellKnownObjectMode.Singleton);Client:
cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                 "tcp://host:1500/TestService");
第三种方式
Host:
ChannelServices.RegisterChannel (new TcpChannel(1500));
RemotingConfiguration.RegisterActivatedServiceType(typeof(cTransfer));Client:
object[] attr = {new UrlAttribute("tcp://host:1500")};
object[] args = {"Sample constructor argument"};
cTransfer T = (cTransfer) Activator.CreateInstance(typeof(cTransfer), args, attr);
如果我们需要一个对象(object)允许远程调用处理,那么这个对象(object)需要继承于MarshalByRefObject这个类。

如何在remoting中传送文件呢?基本思路就是在client打开client的文件,转换在Byte[]类型之后调用host的对象。
Client与Host之间传送的对象
[Serializable]
    public struct kAction
    {
        public string filename;
        public byte[] context;

};打开文件,将流字节保存到Context中去
Stream  fileStream=File.Open(this.transFileName.Text,FileMode.Open);
            fileStream.Position=0;
            byte[] Content = new byte[((int) fileStream.Length) + 1];
            fileStream.Read(Content,0,Content.Length) ;
在Host在读取到Kaction之后,把它保存到指定文件夹下面
MemoryStream meoeryStream=new MemoryStream(k_Action.context);
            FileStream fileStream=new FileStream(@"d:\"+k_Action.filename,FileMode.Create);
            meoeryStream.WriteTo(fileStream);
            fileStream.Close();
            meoeryStream.Close();           
发现不能在对象中又定义新的对象。在准备发送到HOST上会提示“包含潜在危险的类型”。
[Serializable]
    public struct kAction
    {
        public string filename;
        public byte[] context;
                public FineInfo fileInfo;//这里

};
记录一下自己的心得。有空我会好好整理下下回做篇完整点的。

cnzc's blogs

(0)

相关推荐

  • 详解MYSQL中重命名procedure的一种方法

    最近有用到对存储过程(procedure)重命名的功能,在网上找了一下资料都没有讲到在mysql中是如何实现的,当然可以删掉再重建,但是应该有别的方法,在"mysql"这个数据库(自带)中找了一下,发现两张表:func.proc,发现func表是空的,proc表记录了有关procedure和function有关的信息. 尝试对proc表进行更新,重命名成功了! 总结 以上所述是小编给大家介绍的MYSQL中重命名procedure的一种方法,希望对大家有所帮助,如果大家有任何疑问请给我留

  • Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤

    进入Linux 命令行,编辑防火墙规则配置文件 iptables vi /etc/sysconfig/iptables 下面是一个白名单设置的例子: # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTP

  • centos7中firewall防火墙命令详解

    为了架设ss在vultr上买了一个日本的vps 用的是centos7的系统 防火墙是 firewall 捣鼓了两天 在这里总结一下. 如果小伙伴也准备在vultr上买vps  在注册是 可以使用这个优惠连接http://www.vultr.com/?ref=6972993-3B 会的到 20$ 的优惠  也就可以免费使用4个月 如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start fir

  • 定义标题的最好方法

    作者:阿宏 2005-4-15 20:45:18原文:What is the Best Way to Mark up the Title of a Document? 说明:本文是 <Web Standards Solutions: The Markup and Style Handbook>一书中的一章.书号:ISBN:1590593812.我们会陆续翻译此书中有价值的章节. 原作者:Dan Cederholm 翻译:阿宏 一个文档标题,最好的定义方法是什么?要回答这个问题,先设想我们要在一

  • ASP.NET通过Remoting service上传文件

    最近在因为在学习Remoting,纯粹只是了解一下,发现Remoting确实是好东西. 我们通常有三种方式来使用remoting,一种是 第一种:Publishing a public object公开的对象创建在本地第二种:Remote creation of a public object (SAO)对象创建在客户端请求中第三种:Remote creation of a private object (CAO)对象创建在HOST上,客户端引用服务器上的对象 目次我也没有很好理解这三种的本质区

  • asp.net fileupload控件上传文件与多文件上传

    1.前台文件 Default.aspx: <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

  • asp.net使用ajaxFileUpload插件上传文件(附源码)

    ajaxFileUpload.js 很多同名的,因为做出来一个很容易. 我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在这里:http://xiazai.jb51.net/201701/yuanma/ajaxfileupload(jb51.net).rar AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值. 当初做了个异步上传的功能

  • ASP.NET插件uploadify批量上传文件完整使用教程

    uploadify批量上传文件完整使用教程,供大家参考,具体内容如下 1.首先准备uploadify的js文件,网上一搜一大堆 2.上传页面UpFilePage.aspx 关键代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/h

  • HTTP协议下用Web Service上传大文件的解决方案

    用HTTP协议上传大文件也许是个不好办的问题.主要是它的不连续性,使得上传文件感觉很"危险".特别是很大的文件(几百MB甚至是上G的文件),心里总觉得不踏实,一不小心就会出现问题,而一但出现问题就无法继续上传,这是很郁闷的. 后来在一些网站上找到一些上传文件的组件,但都是要用到一些COM组件.至于后来的ASP.net下上传大文件的解决方案,我也做过一个组件,后来发现根本就不用自己写什么组件,利用ASP.net自己的上传方法也可以解决大文件上传,真是郁闷的要死了.... 回想之后,决定用

  • AngularJS向后端ASP.NET API控制器上传文件

    本文实例介绍了前端AngularJS向后端ASP.NET Web API上传文件的实现方法,具体内容如下 首先服务端: public class FilesController : ApiController { //using System.Web.Http [HttpPost] public async Task<HttpResponseMessage> Upload() { if(!Request.Content.IsMimeMultipartContent()) { this.Requ

  • asp.net中MVC借助Iframe实现无刷新上传文件实例

    本文实例讲述了asp.net中MVC借助Iframe实现无刷新上传文件的方法.分享给大家供大家参考.具体实现方法如下: html: 复制代码 代码如下: <div id="uploadwindow" style="display: none;">     <form action="/ShopActivitys/ImportActivityItems" id="form1" name="form1&

  • asp.net上传文件到数据库的解决方案

    现在,我们来看存放文件的数据库表结构,这里,我们给出建立表的标准SQL语句: CREATE TABLE tblBooksUpload ( DocID int NOT NULL IDENTITY Primary Key , DocTitle varchar (200) , Doc image, DocType varchar (50) , Entrydate datetime Default GetDate() ) 以上的语句中,我们看到数据表tblBooksUpload包含五个字段: ·字段Do

  • Asp.Net的FileUpload类实现上传文件实例

    本文实例讲述了Asp.Net的FileUpload类实现上传文件的方法.分享给大家供大家参考. 具体功能代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Web.UI; using System.Web; using System.Web.UI.WebControls; using System.Collections; using System.Dra

  • Asp.net FileUpload上传文件夹并检测所有子文件的实现代码

    Asp.net FileUpload上传文件夹并检测所有子文件的实现代码,非常简单,具体内容如下所示: 1.在FileUpload控件添加一个属性 webkitdirectory=""就可以上传文件夹了 <asp:FileUpload ID="FileUpload1" runat="server" webkitdirectory="" /> 2.检测文件夹下所有子文件 string DirectoryName =

随机推荐