NET的应用程序域

合集下载

C#笔试题及答案

C#笔试题及答案

C#笔试题及答案C#笔试题及答案篇11、面向对象的思想主要包括什么?● 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

● 继承:子类拥有父类的所有数据和操作。

● 多态:一个程序中同名的不同方法共存的情况。

有两种形式的多态–重载与重写。

2、什么是中的用户控件用户控件就是.asc某扩展名的东西,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.3、new 关键字用法(1)new 运算符:用于创建对象和调用构造函数。

(2)new 修饰符:用于向基类成员隐藏继承成员。

(3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

C#笔试题及答案篇21、什么叫应用程序域?什么是受管制的代码?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。

应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。

应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

受管制的代码:在.Net环境中运行的任何代码都是受管制的代码(managed code),.Net外部的代码也运行在windows上,这些代码称为未受管制的代码(unmanaged code)。

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

强类型语言是能够禁止任何违反类型系统的代码的语言,或者说是能够捕获所有违反类型系统的错误的语言。

我们说C++相对于C是强类型的,是因为C++禁止了一些C中的隐式转换,比如将void某转换为任意的指针类型。

数据库程序设计练习题参考答案

数据库程序设计练习题参考答案

第1章Web应用程序设计与开发概述一、选择题1.C 2.C 3.C二、填空题1.IIS2.超文本标记语言3.文件头4.文件体三、简答题1.答:(1)准备Web服务器。

(2)安装操作系统。

(3)安装Web服务器应用程序。

(4)安装和配置脚本语言编辑工具。

(5)安装和配置后台数据库系统。

(6)设计数据库结构,创建数据库对象。

(7)设计Web应用程序,编写脚本语言代码。

(8)测试Web应用程序,通过测试后上线运行。

2.答:参照图1.2。

3.答:参照1.3.5小节。

第2章应用及开发环境配置一、选择题1.B 2.A 3.C 4.B 5. D二、填空题1.Internet Information Server2.Default.htm3.Default.asp4.index.htm5.iisstart.htm6.本地链接7.远程链接8..aspx三、操作题(略)第3章C#程序设计基础一、选择题1.C 2.D 3.C 4.A 5.A6.C 7.B 8.C二、填空题1.公共语言运行库2..NET Framework 类库3.System4.值类型5.引用类型6.类7.数组8.接口9.委托10.object11.string12.do…while13.while14.for15.foreach16.System.Exception三、问答题1.答:C#语言具有如下主要特点:(1)语法简洁与C++语言相比,C#的更加简单,更易于学习和掌握。

例如,在C#语言中,没有C++中经常用到的指针,用户也不允许直接进行内存操作。

在C++语言中,分别使用::、.和->来表示名字空间、成员和引用,对于新手而言,这些操作符的使用是比较复杂的事情。

这些在C#语言中都被“.”所替代,现在只需要把它作为名字嵌套而已。

这里只是举了两个简单的例子,其他语法方面的简化需要读者在学习过程中去体会。

(2)更完善的面向对象程序设计机制C#语言具有面向对象程序设计思想的一切机制,包括封装、继承与多态等。

理解.NET中的CLR原理

理解.NET中的CLR原理

4.调用和配置
当运行库试图解析对另一个程序集的引用时,就开始进行定位并绑定到程序集的进程。该引用可以是静态的,也可以是动态的。在生成时,编译器在程序集清单的元数据中记录静态引用。动态引用是由于调用各种方法而动态构造的,例如 System.Reflection.Assembly.Load 方法。
元数据是组件对象模型中关于PE的信息, 元数据之间是通过非标准类型的库通信的. 在.NET中,这些数据包含在目标文件格式中,包括与目标文件格式相匹配的PE以及某些确定的指导方针;他所包含的信息像汇编的名字,版本号,语言外部的形式用作参考注释, 内部形式也很透明,清楚的阐明了使用的方法,引用的函数,类等等。
二:使用同一种语言——— CLR (公共语言运行时)
1.跨语言应用
当编程人员在用自己喜欢的编程语言写源代码的时候, 这个源代码在被转化成媒介语言(IL)之前,先被编译成了一个独立的可执行单元(PE)。这样无论你是一个程序员,或一个C#程序员,甚至是使用托管的C++的程序员。只要被编译成IL就是同等的。
在可以执行代码前,必须将 MSIL 转换为 CPU 特定的代码,这通常是通过实时 (JIT) 编译器完成的。由于公共语言运行库为它支持的每种计算机结构都提供了一种或多种 JIT 编译器,因此可以在任何受支持的结构上对同一组 MSIL 进行 JIT 编译和执行。
这样总结上面的就是:中间语言是一组独立于CPU的指令集,它可以被即时编译器Jitter翻译成目标平台的本地代码。
关于PE(可执行可移植文件)
Windows PE和一个 .NET PE的主要区别在于Windows PE 是由操作系统执行的,而.NET PE 却被转变成为.NET Framework的CLR. 识别一个PE是 .NET还是Windows取决于他的通用的目标文件格式 (COFF) 是否使用Windows的操作系统. 目标文件格式 (COFF) 指定了任何文件都分成两个部分:文件数据本身以及描述文件内包含的数据内容的头文件串。

C#编程基础练习题与答案

C#编程基础练习题与答案

1.面向对象的思想主要包括什么?答:个人认为一各程序语言要成为真正的面向对象的程序设计语言,它必须符合下列条件: 1抽象(abstraction)—抽象能够有效地管理一个问题的复杂性,其作法是划分出与该问题相关的一组对象.2 封装(Encapsulation)—封装是指将一个抽象的内部实现隐藏在特定的对象之内.3 多态(polymorphism)—多态会提供相同方法的多种操作方法的多种操作实作.例如,不同的对象都会拥有一个Save方法,但是每一个Save方法会执行不同的操作.4 继承(inheritance)—Visual C# 2005 最令人兴奋之处就是其继承特性.v c#2005则提供了真正的方法继承,因此您可以重复使用一个类的实例.2.什么是中的用户控件自己动手作自己的控件来取代.NET提供的控件。

这种控件就是用户控件。

后缀为.ascx3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?什么是多态? CTS、CLS和CLR分别作何解释?应用程序域:应用程序域(通常是AppDomain)是用于隔离应用程序的虚拟进程。

在同一个应用程序作用域中创建的所有对象(换句话说,从该应用程序的入口点开始沿着对象激活序列的任何地方)都在同一个应用程序域中创建。

多个应用程序域可以存在于一个操作系统进程中,使它们成为隔离应用程序的简便方式。

操作系统进程通过使用各不相同的内存地址空间来提供隔离。

尽管它是有效的,但也是代价昂贵的,并且不能达到大型Web 服务器所需要的数量。

与其相比,公共语言运行时通过管理在应用程序域中运行的代码的内存使用来强制进行应用程序隔离。

这样就确保它不会访问应用程序域以外的内存。

需要注意的是,只有类型安全的代码才能以这种方式管理(当在应用程序域中加载不安全代码时,运行时不能保证隔离)。

理解应用程序域:应用程序域是.NET 运行库的逻辑进程表示,操作系统进程可以包含多个应用程序域。

C#通过AppDomain应用程序域实现程序集动态卸载或加载

C#通过AppDomain应用程序域实现程序集动态卸载或加载

C#通过AppDomain应⽤程序域实现程序集动态卸载或加载 AppDomain 表⽰应⽤程序域,它是⼀个应⽤程序在其中执⾏的独⽴环境。

每个应⽤程序只有⼀个主应⽤程序域,但是⼀个应⽤程序可以创建多个⼦应⽤程序域。

因此可以通过 AppDomain 创建新的应⽤程序域,在新创建的⼦应⽤程序域中加载执⾏程序集并且在执⾏完毕后释放程序集资源,来实现系统在运⾏状态下,程序集的动态加载或卸载,从⽽达到系统运⾏中程序集热更新的⽬的。

所谓应⽤程序域,.Net引⼊的⼀个概念,指的是⼀种边界,它标识了代码的运⾏范围,在其中产⽣的任何⾏为,包括异常都不会影响到其他应⽤程序域,起到安全隔离的效果。

也可以看成是⼀个轻量级的进程。

⼀个进程可以包含多个应⽤程序域,各个域之间相互独⽴。

如下是⼀个.net进程的组成(图⽚来⾃⽹络)以下为整个原理的实现代码主应⽤程序⼊⼝:using Kernel.ServiceAgent;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Runtime.Remoting;using System.Text;using System.Threading;using System.Threading.Tasks;namespace Kernel.App{class Program{static void Main(string[] args){Console.WriteLine("");using (ServiceManager<IObjcet> manager = new ServiceManager<IObjcet>()){string result = manager.Proxy.Put("apprun one");Console.WriteLine(result);Console.WriteLine("");Console.WriteLine(" Thread AppDomain info ");Console.WriteLine(manager.CotrProxy.FriendlyName);Console.WriteLine(Thread.GetDomain().FriendlyName);Console.WriteLine(manager.CotrProxy.BaseDirectory);Console.WriteLine(manager.CotrProxy.ShadowCopyFiles);Console.WriteLine("");}Console.ReadLine();}}}创建新的应⽤程序域并且在新的应⽤程序域中调⽤透明代理类:using Kernel.Interface;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Security.Policy;using System.Text;using System.Threading;using System.Threading.Tasks;namespace Kernel.ServiceAgent{public class ServiceManager<T> : IDisposable where T : class{private AppDomain ctorProxy = null;///<summary>///应⽤程序运⾏域容器///</summary>public AppDomain CotrProxy{get { return ctorProxy; }}private T proxy = default(T);public T Proxy{get{if (proxy == null){proxy = (T)InitProxy(AssemblyPlugs);}return proxy;}}private string assemblyPlugs;///<summary>///外挂插件程序集⽬录路径///</summary>public string AssemblyPlugs{get {assemblyPlugs = ConfigHelper.GetVaule("PrivatePath");if (assemblyPlugs.Equals("")){assemblyPlugs = bine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");}if (!Directory.Exists(assemblyPlugs)){Directory.CreateDirectory(assemblyPlugs);}return assemblyPlugs;}set { assemblyPlugs = value; }}public ServiceManager(){if (proxy == null){proxy = (T)InitProxy(AssemblyPlugs);}}private T InitProxy(string assemblyPlugs){try{//AppDomain.CurrentDomain.SetShadowCopyFiles();//Get and display the friendly name of the default AppDomain.//string callingDomainName = Thread.GetDomain().FriendlyName;//Get and display the full name of the EXE assembly.//string exeAssembly = Assembly.GetEntryAssembly().FullName;//Console.WriteLine(exeAssembly);AppDomainSetup ads = new AppDomainSetup();ads.ApplicationName = "Shadow";//应⽤程序根⽬录ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;//⼦⽬录(相对形式)在AppDomainSetup中加⼊外部程序集的所在⽬录,多个⽬录⽤分号间隔 ads.PrivateBinPath = assemblyPlugs;//设置缓存⽬录ads.CachePath = ads.ApplicationBase;//获取或设置指⽰影像复制是打开还是关闭ads.ShadowCopyFiles = "true";//获取或设置⽬录的名称,这些⽬录包含要影像复制的程序集ads.ShadowCopyDirectories = ads.ApplicationBase;ads.DisallowBindingRedirects = false;ads.DisallowCodeDownload = true;ads.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;//Create evidence for the new application domain from evidence ofEvidence adevidence = AppDomain.CurrentDomain.Evidence;// Create the second AppDomain.ctorProxy = AppDomain.CreateDomain("AD #2", adevidence, ads);//Type.GetType("Kernel.TypeLibrary.MarshalByRefType").Assembly.FullNamestring assemblyName = Assembly.GetExecutingAssembly().GetName().FullName;//string assemblyName = typeof(MarshalByRefType).Assembly.FullName// Create an instance of MarshalByRefObject in the second AppDomain.// A proxy to the object is returned.Console.WriteLine("CtorProxy:" + Thread.GetDomain().FriendlyName);//TransparentFactory factory = (IObjcet)ctorProxy.CreateInstance("Kernel.TypeLibrary", "Kernel.TypeLibrary.TransparentFactory").Unwrap();TransparentAgent factory = (TransparentAgent)ctorProxy.CreateInstanceAndUnwrap(assemblyName, typeof(TransparentAgent).FullName);Type meetType = typeof(T);string typeName = AssemblyHelper.CategoryInfo(meetType);object[] args = new object[0];string assemblyPath = ctorProxy.SetupInformation.PrivateBinPath;//IObjcet ilive = factory.Create(@"E:\Plug\Kernel.SimpleLibrary.dll", "Kernel.SimpleLibrary.PlugPut", args);T obj = factory.Create<T>(assemblyPath, typeName, args);return obj;}catch (System.Exception){throw;}}///<summary>///卸载应⽤程序域///</summary>public void Unload(){try{if (ctorProxy != null){AppDomain.Unload(ctorProxy);ctorProxy = null;}}catch(Exception){throw;}}public void Dispose(){this.Unload();}}}创建应⽤程序代理类:using Kernel.Interface;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace Kernel.ServiceAgent{public class TransparentAgent : MarshalByRefObject{private const BindingFlags bfi = BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance;public TransparentAgent() { }///<summary> Factory method to create an instance of the type whose name is specified,/// using the named assembly file and the constructor that best matches the specified parameters. </summary>///<param name="assemblyFile"> The name of a file that contains an assembly where the type named typeName is sought. </param> ///<param name="typeName"> The name of the preferred type. </param>///<param name="constructArgs"> An array of arguments that match in number, order, /// and type the parameters of the constructor to invoke, or null for default constructor. </param>///<returns> The return value is the created object represented as IObjcet. </returns>public IObjcet Create(string assemblyFile, string typeName, object[] args){return (IObjcet)Activator.CreateInstanceFrom(assemblyFile, typeName, false, bfi, null, args, null, null).Unwrap();}public T Create<T>(string assemblyPath, string typeName, object[] args){string assemblyFile = AssemblyHelper.LoadAssemblyFile(assemblyPath, typeName);return (T)Activator.CreateInstanceFrom(assemblyFile, typeName, false, bfi, null, args, null, null).Unwrap();}}}所有涉及到需要动态加载或释放的资源,都需要放在代理类中进⾏操作,只有在此代理类中进⾏托管的代码才是属于新建的应⽤程序域的操作。

C#知识点汇总

C#知识点汇总

第1部分 .NET基本概念1.应用程序域:应用程序域可以理解为一种轻量级进程。

起到安全的作用。

占用资源小。

应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。

开发者可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。

在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。

2.CTS:通用类型系统。

CTS:类似于COM定义的标准二进制格式,.NET定义了一个称为通用类型系统 Common Type System (CTS)的类型标准。

这个类型不但实现COM的变量兼容,而且还定义了通过用户自定义类型的方式进行类型扩展。

任何类型的方式进行类型扩展。

任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的影射。

所有.NET语言共享这一类型系统,实现他们之间无缝的互操作。

该方案还提供了语言之间的继承性。

3.CLS:公共语言规范。

.NET通过定义公共语言规范(CLS:Common Language Specification),限制了由这些不同引发的互操作性问题。

CLS指定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。

CLS是CTS的一个子集。

4.CLR:公共语言运行库Common Language Runtime(CLR).CLR是CTS的实现,也就是说,CLR是应用程序的执行引擎和功能齐全的类库,该类库严格按照CTS规范实现。

作为程序执行引擎,CLR负责安全地载入和运行用户程序代码,包括对不同对象的垃圾挥手和安全检查。

CLR监控之下运行的代码,称为托管代码(managed code)。

5.IL(Intermediate Language,中间语言):可用于语言互操作性,IL不是字节代码,但很接近字节代码,因此执行应用程序时,IL到机器代码的转换要快很多。

C#面试题

C#面试题

C#面试题1,请你说说.NET中类和结构的区别答:结构和类具有大体的语法,但是结构受到的限制比类要多。

结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。

结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是引用类型,改变其变量的值会改变其原值。

申明结构用Struck 关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。

与类不同,结构的实例化可以不使用New关键字。

类可以实现接口。

3,接口是否可以继承接口抽象类是否可以实现接口抽象类是否可以继承实体类答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。

4,构造器Constructor是否可以被继承是否可以被Override答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).5,当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法答:不可以,一个对象的方法只能由一个线程访问。

6, C#是否可以对内存直接进行操作答:这个问题比较难回答,也是个很大的问题。

但是可以这样问答。

C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe,,在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。

7, Error和Exception有是区别答:error表示恢复不是不可能,但是很困难,exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。

8,谈谈final,finally,finallize的区别答:final用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。

网络技术应用复习知识点

网络技术应用复习知识点

网络技术应用复习知识点一、因特网应用因特网诞生于 1969 年初,前身是阿帕网,我国的四大骨干网: CERNET、CSTNET、Chinanet、ChinaGBN。

(一)因特网应用技术的基本使用方法:1、因特网服务的基本类型:远程登录( Telnet )、文件传输(ftp)、信息浏览和检索、电子公告牌系统( BBS )、电子邮件等。

2、因特网服务组织的类型、提供的服务与服务特点:ISP(因特网服务提供商):主要提供因特网的接入服务。

ICP(因特网内容提供商):提供因特网信息检索、整理、加工等服务,如新浪、搜狐等。

ASP(因特网应用服务提供商):主要为企、事业单位进行信息化建设及开展电子商务提供各种基于因特网的应用服务。

3、因特网的应用领域:电子商务、远程医疗、远程教育、网上娱乐等。

4、因特网应用的发展趋势:1 )网格计算:是分布式计算的一种,它利用网络将大型计算机和个人计算机设备集中在一起,使计算能力大幅提升。

2 )虚拟现实技术:伴随多媒体技术发展起来的计算机新技术,它利用三维图形生成技术、多传感交互技术以及高分辨显示技术,生成三维逼真的虚拟环境,供用户研究或训练。

它融合了数字图像处理、计算机图形学、多媒体技术、传感器技术等多个信息技术分支。

3 )无线网络应用技术(二)、搜索引擎的分类、原理及特点因特网信息检索发展趋势:多媒体信息检索,专业垂直搜索引擎。

(三)利用因特网获取信息1、常见因特网信息交流工具(:2、因特网交流的优势与局限性二、网络技术基础(一)网络的主要功能1、计算机网络的主要有三大功能:数据通信、资源共享、分布处理。

2、计算机网络的分类:按照覆盖范围分:局域网城域网光域网(LAN)(MAN)(WLAN)校园网,电脑网络教室,网吧,社区网络等城市网络因特网按照拓扑结构分:总线型环型星型交换机(二)、网络协议的基本概念1、网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

什么叫应用程序域

什么叫应用程序域

什么叫应用程序域在软件开发中,我们经常听到一个术语——应用程序域。

那么什么叫应用程序域呢?应用程序域是一种用于隔离和管理应用程序的技术,它提供了一个独立的执行环境,使得不同的应用程序可以在同一个进程中运行,互不干扰。

本文将详细介绍应用程序域的定义、作用、使用场景以及与其他相关概念的比较。

定义应用程序域(Application Domain)是.NET框架中的一个概念,它是CLR(公共语言运行时)的基本组成部分。

它可以看作是一个逻辑上的容器,用于隔离和管理应用程序的执行环境。

每个应用程序域都有自己的一套代码、数据和配置,可以独立加载和卸载,互不干扰。

作用应用程序域的主要作用是提供了一种灵活、可靠的隔离机制,使得不同的应用程序可以在同一个进程中运行,互不干扰。

它可以有效地控制资源的使用和回收,提高系统的稳定性和安全性。

另外,应用程序域还提供了一种动态加载和卸载代码的机制,使得应用程序的扩展和更新变得更加容易。

使用场景应用程序域通常被用于以下几种场景:1. 多语言支持:由于.NET框架支持多种编程语言,不同的应用程序可能会使用不同的编程语言编写。

通过应用程序域的隔离机制,不同的应用程序可以在同一个进程中运行,互不干扰,从而实现多语言支持。

2. 插件系统:应用程序域可以用于实现插件系统,允许在应用程序运行时动态加载和卸载插件。

插件与主程序相互隔离,互不干扰,提高了系统的可扩展性和灵活性。

3. 资源隔离:不同的应用程序可能需要访问共享资源,如数据库、文件系统等。

通过应用程序域的隔离机制,可以确保不同的应用程序之间的资源访问不会相互干扰,提高了系统的稳定性和安全性。

与其他相关概念的比较应用程序域与进程、线程是密切相关的概念,它们之间有着明显的区别。

1. 进程:进程是计算机中正在运行的程序的实例。

每个进程都有自己的地址空间、资源和独立的执行环境。

应用程序域可以在同一个进程中创建多个逻辑上独立的执行环境,使得不同的应用程序可以同时运行。

让C#语言充当自身脚本!——.NET中的动态编译

让C#语言充当自身脚本!——.NET中的动态编译

if (cr.Errors.HasErrors)
{
string strErrorMsg = cr.Errors.Count.ToString() + " Errors:";
for (int x = 0; x < cr.Errors.Count; x++)
CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();
// 2.Sets the runtime compiling parameters by crating a new CompilerParameters instance
{
strErrorMsg = strErrorMsg + "/r/nLine: " +
cr.Errors[x].Line.ToString() + " - " +
cr.Errors[x].ErrorText;
}
}
}
运行附件中提供的程序,可以很容易得到一下结果:
改进的执行过程
现在一切看起来很好,我们可以编译代码并把代码加载到当前应用程序域中来参与我们的活动,但你是否想过去卸载掉这段程序呢?更好的去控制程序呢?另外,当你运行这个程序很多遍的时候,你会发现占用内存很大,而且每次执行都会增大内存使用。是否需要来解决这个问题呢?当然需要,否则你会发现这个东西根本没用,我需要执行的一些大的应用会让我的服务器crzay,不堪重负而疯掉的。
需要解释的是,这里我们在传递编译参数时设置了GenerateInMemory为true,这表明生成的DLL会被加载在内存中(随后被默认引用入当前应用程序域)。在调用GetTime方法时我们需要加入参数,传递object类型的数组并通过Reflection的InvokeMember来调用。在创建生成的Assembly中的对象实例时,需要注意用到的命名空间是你输入代码的真实命名空间。以下是我们输入的测试代码(为了方便,所有的代码都在外部输入,动态执行时不做调整):

C#面试题精选

C#面试题精选

C#⾯试题精选⼀、接⼝与抽象类抽象类:1)抽象类是⼀种不能直接实例化⽽必须从中继承的类,抽象类实例由它的⼦类给出,抽象类可以提供实现,也可以不提供实现,2)抽象类可以定义⾮静态的类变量,抽象类成员可以是私有的,受保护的,公有的3)抽象类是单继承(⼦类只能继承⼀个抽象类);4)抽象类主要⽤于关系密切的对象,若设计⼤的功能单元,则使⽤抽象类;抽象类⽤于共性;5)在抽象类中加⼊⼀个⽅法,那么它的⼦类就同时有了这种⽅法;接⼝:1)接⼝不提供任何实现,接⼝的实例是实现接⼝的类给出的2)接⼝成员不能包含常数,字段,运算符,实例构造函数,析构函数,静态成员等,只能是⽅法,属性,事件,或索引器,且其成员都是共有的3)多继承,多态性,类或结构可以继承多个接⼝;4)适合于为不相关的类提供通⽤功能;接⼝⽤于规范5)在接⼝中加⼊⽅法,那实现它的类就必须重新编写;⼆、装箱和拆箱装箱和拆箱是值类型和引⽤类型之间相互转换是要执⾏的操作。

1.装箱在值类型向引⽤类型转换时发⽣:object obj = 1;2. 拆箱在引⽤类型向值类型转换时发⽣装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2.0之后引⼊了泛型来减少装箱操作和拆箱操作消耗。

三、return,break,continue1、return 语句的作⽤从当前的⽅法中退出,返回到该调⽤的⽅法的语句处,继续执⾏。

2、break语句的作⽤⽤在循环体内和switch语句体内;⽤在循环体内表⽰跳出本层循环体,从⽽提前结束本层循环;⽤在switch中表⽰跳出跳出switch语句体。

3、continue语句作⽤其作⽤是结束本次循环,即跳过本次循环体中余下尚未执⾏的语句,接着再⼀次进⾏循环的条件判定。

四、⽤.net做B/S结构的系统,您是⽤⼏层结构来开发,每⼀层之间的关系⽬前.Net平台下的B/S开发框架基本可以分为三⼤类:基于控件和页⾯事件驱动思想的Web Forms;基于模型、视图、控制器的MVC模式;综合了Web Forms和MVC的⼀些特点⽽产⽣的框架;表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)表现层负责与⽤户交互;业务逻辑层就是指派数据访问层进⾏表现层请求的逻辑性的业务处理,数据访问层对数据库进⾏增删查改。

第 7 章 Internet基础知识

第 7 章 Internet基础知识

FTP(文件传输协议)
FTP允许用户可以在本地机上以文件操作的方式(文件的增、删、 改、查、传送等)与远程机之间进行相互通信。
TELNET(远程终端访问协议)
该协议允许本地主机作为仿真终端登录到远程的另一台主机上, 把用户请求传送给远程主机,同时也能将远程主机的输出结果通过 TCP连接返回到用户屏幕。
根域
CN
EDU NET
COM GOV ORG INT
EDU NET
AC
IBM
DEC …… ATT
图7-4 域名系统的层次结构示意图
一些国家或地区一级域名的代码如下图7-5所示:
国家名称 中国 巴西 加拿大
澳大利亚 法国 德国
中国香港
国家域名 CN BR CA AU FR DE HK
国家名称 日本 韩国
TCP要完成流量控制和差错检验的任务,以保证可靠的数据传输。
(2)IP(网际协议)
IP的主要任务是对数据包进行寻址和路由选择,并从一个网络转发 到另一个网络。IP在每个发送的数据包前都加入了一个控制信息,其 中包含了源主机IP地址和目的主机IP地址等信息。
IP是一个面向无连接的协议,即主机之间事先不需建立用于可靠通信 的端到端连接,源主机只是简单地将IP数据包发送出去。这样数据包在 传输途中可能会丢失、重复、或者次序发生混乱。因此,还必须要依 靠高层的协议(如TCP)或应用程序实现数据包的可靠传输。
图7-1 Internet 物理结构示意图
各用户并不是将自己的计算机直接连接到Internet上的,而是连 接到其中的某个网络上(如校园网、企业网等),该网络再通过 使用路由器等网络设备,并租用数据通信专线与广域网相连,成 为Internet的一份子。

汇总最全的C#.NET(数据库.net其它)面试题及参考答案

汇总最全的C#.NET(数据库.net其它)面试题及参考答案

汇总最全的C#.NET(数据库.net其它)⾯试题及参考答案⼀、数据库篇1.维护数据库的完整性、⼀致性、你喜欢⽤触发器还是⾃写业务逻辑?为什么?答:尽可能⽤约束(包括CHECK、主键、唯⼀键、外键、⾮空字段)实现,这种⽅式的效率最好;其次⽤触发器,这种⽅式可以保证⽆论何种业务系统访问数据库都能维持数据库的完整性、⼀致性;最后再考虑⽤⾃写业务逻辑实现,但这种⽅式效率最低、编程最复杂,当为下下之策。

2.什么是事务?什么是锁?请说出sql server中锁的隔离级别有哪些,默认是哪⼀种?答:事务是指⼀个⼯作单元,它包含了⼀组数据操作命令,并且所有的命令作为⼀个整体⼀起向系统提交或撤消请求操作,即这组命令要么都执⾏,要么都不执⾏。

锁是在多⽤户环境中对数据的访问的限制。

SqlServer⾃动锁定特定记录、字段或⽂件,防⽌⽤户访问,以维护数据安全或防⽌并发数据操作问题,锁可以保证事务的完整性和并发性。

3.什么是索引,有什么优点?使⽤索引需要注意些什么?答:索引与书的⽬录类似,可以快速定位要查找的数据所有位置,索引使数据库程序⽆需扫描整个表,就可以在其中找到所需要的数据,索引包含了⼀个表中包含值的列表,其中包含了各个值的⾏所存储的位置,索引可以是单个或⼀组列,索引提供的表中数据的逻辑位置,合理划分索引能够⼤⼤提⾼数据库性能。

索引需要注意:加索引的列⼀定要是经常使⽤来条件筛选的列,并且where中要避免对有索引的列进⾏计算,索引并不是越多越好,索引会占⽤更多的存储空间,也会对insert 、update、delete这些操作有⼀定的性能影响。

4.视图是什么?游标是什么?答:视图是⼀种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进⾏增该查操作;视图通常是⼀个或多个表的⾏或列的⼦集;视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相⽐多表查询更⽅便),限制数据检索(⽐如需要隐藏某些⾏或列),维护更⽅便。

.NET面试题大全(C#面试题)2020更新

.NET面试题大全(C#面试题)2020更新

.NET⾯试题⼤全(C#⾯试题)2020更新⽬录:⼀、笔试⾯试题⼆、问答⾯试题⼀、笔试⾯试题:1. 简述 private、 protected、 public、 internal 修饰符的访问权限。

答 . private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同⼀命名空间内可以访问。

2 .列举 页⾯之间传递值的⼏种⽅式。

答. 1.使⽤QueryString, 如....?id=1; response. Redirect()....2.使⽤Session变量3.使⽤Server.Transfer4.使⽤Application5.使⽤Cache6使⽤HttpContext的Item属性7.使⽤⽂件8.使⽤数据库9.使⽤Cookie3. ⼀列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,⽤递归算法实现。

答:public class MainClass{public static void Main(){Console.WriteLine(Foo(30));}public static int Foo(int i){if (i <= 0)return 0;else if(i > 0 && i <= 2)return 1;else return Foo(i -1) + Foo(i - 2);}}4.C#中的委托是什么?事件是不是⼀种委托?答:委托可以把⼀个⽅法作为参数代⼊另⼀个⽅法。

委托可以理解为指向⼀个函数的引⽤。

是,是⼀种特殊的委托5.override与重载的区别答:override 与重载的区别。

重载是⽅法的名称相同。

参数或参数类型不同,进⾏多次重载以适应不同的需要Override 是进⾏基类中函数的重写。

.net程序设计——考试题库及答案

.net程序设计——考试题库及答案
以下哪个逻辑运算符是按位与操作运算符
收藏 A. ! B. &
C. = D. +
回答错误!正确答案: B
当在程序中执行哪个语句时,将结束所在循环语句的执行
收藏 A. break B. catch C. continue D. end
回答错误!正确答案: A
C#中,派生类只能从_____个类中继承。
收藏 A. 两个 B. 任意多个 C.
收藏 A. params 修饰符可以与 ref 和 out 修饰符组合起来使用 B. 若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后; C.
参数数组必须是一维数组 D. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字
回答错误!正确答案: A
收藏 A. 数据绑定 B. 数据相关控件 C. 顺序工作流
回答错误!正确答案: A
Class View 工具的目的是从__ 角度显示当前项目里的所有类型。
收藏 A. 面向环境 B. 面向对象 C. 面向内容 D. 面向过程
回答错误!正确答案: B
有关 LINQ 查询表达式另一个重要的地方是在我们迭代内容之前,他们不会真 正的运算,这叫做__ 。
收藏 A. 延迟执行 B. 响应文件 C. 验证控件 D. 业务流程
回答错误!正确答案: A
关于属性与索引器的区别,以下哪种说法不正确
收藏 A. 索引器没有名称 B. 索引器的类型和集合元素的类型一致 C. 索引器至少有一个参数 D. 一个类中只能有一个索引器
回答错误!正确答案: D
__ 是一个运行库类型发现的过程。
一个 D. 一个不能
回答错误!正确答案: C

国内最全的.net面试题目

国内最全的.net面试题目
web/business/dataaccess
----------------------------------------------------------------------------------------------------------
1.面向对象的思想主要包括什么?
答:这个题范围太广,不知道说什么.
18.如何部署一个页面。
答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.
19.如何理解.net中的垃圾回收机制。
答:GC?对象创建了总要清除啊,不然内存哪够用?
20.常用的调用webservice方法有哪些?
答:调用就调用,还有很多方法吗?
以上有答案的仅供参考(不一定正确哦),如果你有更好的答案请回复告诉我
23.请解释.net采用委托实现的事件模型与JAVA中采用接口实现的事件模型有什么区别,以图示方式解释。
24.请解释接口的显式实现有什么意义?
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
7.WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
8.ASP。NET与ASP相比有什么优势?
9.请解释web.config文件中的重要节点
10.请解释ASP。NET中的web页面与其隐藏类之间的关系?
11.什么是viewstate,能否禁用?是否所用控件都可以禁用?
10.UDP连接和TCP连接的异同。

c#.net面试题和答案

c#.net面试题和答案

1.面向对象的思想主要包括什么?2.什么是ASP .net 中的用户控件3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS 、CLS 和CLR 分别作何解释?4.列举一下你所了解的XML 技术及其应用5.值类型和引用类型的区别?写出C#的样例代码。

中常用的对象有哪些?分别描述一下。

7.如何理解委托?8.C#中的接口和类有什么异同。

9.。

net 中读写数据库需要用到哪些类?他们的作用10.UDP 连接和TCP 连接的异同。

11.ASP .net 的身份验证方式有哪些?分别是什么原理?12.进程和线程分别怎么理解?13.什么是code-Behind 技术。

14.活动目录的作用。

中读写XML 的类都归属于哪些命名空间?16.解释一下UDDI 、WSDL 的意义及其作用。

17.什么是SOAP ,有哪些应用。

18.如何部署一个ASP .net 页面。

19.如何理解.net 中的垃圾回收机制。

20.常用的调用webservice 方法有哪些?1 继承继承多态多态 封装 2 用户控件. 不会说懂得做不会说懂得做3 装箱和拆箱发生装箱和拆箱发生值类型向引用类型转换,和引用类型向值类型转 重载:同一个函数参数不同同一个函数参数不同 4.xml 可以用来做网页(xslt) xml 可以当作数据库 xml 可以用来保存对象的系列化可以用来保存对象的系列化5值类型,没有什么好说的.引用类型用处是返回两个以上参数的时候比较好用 ref out 我常用的是out 不要先赋值不要先赋值6 我直接用 sqlhelper 了有connection command 还有参数还有参数 7 回调机制比较有用的.在net 中采用了委托.8 接口,是可以多继承,类只有单继承.接口强调了你必须实现,而没有具本实现的方法和虚类有点相似而没有具本实现的方法和虚类有点相似9 dat 9 datareader dataset areader dataset 还有一个不太常用还有一个不太常用10 udp 不要实现什么三次握手. 11 身份验证最常用还是以前的session 方法. form 验证没有用过. 微软的哪个也没有用过微软的哪个也没有用过12 进程简单理解为单个程序吧(按ctrl+alt+del)可以看到的.它至少有一个主线程 .13 代码后置..不懂得讲不懂得讲14 活动目录.. 完全不会完全不会15 syst 15 system.xml (system.io em.xml (system.io 创建目录的时候用)16 这个也是web 服务里的东西.17 soap 简单协议.我只知道.web 服务是基于它之上的服务是基于它之上的18 部置一个页面. 也就是说没有代码是直接写在aspx 中的了.只接放在IIS 的虚拟目录下就行了.当然要 支持支持19 垃圾回收..一般的只要掌握.非托管对象要记得释放资源就行了吧.20 直接在 里面引用就OK 了.它会自己生成一个代理类1. 填空: (1)面向对象的语言具有___继承性、_封装___性、___多态性。

NET面试笔试题 (2)

NET面试笔试题 (2)

1.在.net(C# or )中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。

答案:this(C#) Me().2.在.net(C# or )中如何取消一个窗体的关闭。

答案:private void Form1_Closing(object sender, ponentModel.CancelEventArgs e){e.Cancel=true;}3.在.net(C# or )中,Appplication.Exit 还是Form.Close有什么不同?答案:一个是退出整个应用程序,一个是关闭其中一个form4.在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。

比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22答案: public static void Main(){//System.Globalization.CultureInfoMyCulture = newSystem.Globalization.CultureInfo("en-US");System.Globalization.CultureInfo MyCulture = newSystem.Globalization.CultureInfo("en-GB");//为英国货币类型decimal y = 9999999999999999999999999999m;string str = String.Format(MyCulture, "My amount = {0:c}", y);Console.WriteLine(str);}//{0,10:c} 0→下标,10→字符串要占用的字符数如果字符数不够也会完整显示 ,:c 格式说明符 d,e,f,g,n,p,x5.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:(1)密码单词的最小长度是两个字母,可以相同,也可以不同(2)K不可能是单词的第一个字母(3)如果L出现,则出现次数不止一次(4)M不能使最后一个也不能是倒数第二个字母(5)K出现,则N就一定出现(6)O如果是最后一个字母,则L一定出现问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?A) K B)L C) M D) N答案:B问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?A)1个B)3个C)6个D)9个答案:A LL问题三:下列哪一个是单词密码?A) KLLN B) LOML C) MLLO D)NMKO答案:C6.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?答案:62移动成2的6次方7. 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁? 并简要说明理由。

第4章 ASP.NET 3.5技术简介

第4章  ASP.NET 3.5技术简介

4.4.1 基于事件的编程模型
使用事件驱动的编程模型,这与Windows开发有点类似, 开发人员只需要向Web窗体添加控件,然后响应相应的控件事件. 事件编程模型的一个基本过程如下面的步骤所示: (1)当页面首次运行时,创建page对象和控件对象,初 始化代码将被执行,然后页面被渲染为HTML格式返回到客户端. (2)当用户触发了页面回发(Postback)时,通常是触发了一些 事件,比如单击按钮事件,这时候页面将再次提交所有的表单数 据到服务器端. (3)截取返回的页面,并重新创建page对象. (4)检查是什么事件触发了Postback,并触发相应的事 件,这时候开发人员编写的触发事件的代码将被执行. (5)页面将被渲染并返回到客户端.page对象从内存中释放,如 果其他postback产生,将重复2-4步骤.
新的合并工具(Aspnet_merge.exe),可用于合并预编译程序集,以灵活 的方式实现部署和发布管理 提供了序
在这一个示例应用程序中,将使用 3.5中的新增的 LinqDataSource来开发一个简单的 Web应用程序. 假如读者是一位的新手,建议跟着下面的步骤一步 一步的来学习,不必先理解每个细节,这个示例将使读者 对开发过程有一个简单的印象.
4.4
Web窗体基础
一个 Web应用程序主要是由许许多多的 Web页面(也可称之为Web窗体)组成,访问应用 程序的用户将会在浏览器中直接看到这些Web窗体 的运行效果.在中,开发人员可以使用类 似于开发Windows应用程序的基于控件方式来开发 应用程序,当 Web窗体运行时, 引擎读取整个.aspx文件,生成相应的对 象,并触发一系列事件.
4.3.5 编程读取和写入配置设置
在System.Web.Configuration命名空间中提供了 WebConfigurationManager类,用来在运行时编程读取和写入配置 设置.在本章前面己经演示过使用该类读取<appSettings>配置节 中的设置项,除此之外,WebConfigurationManager类还提供了其 他几个成员用于读取或设置其他配置项. WebConfigurationManager静态类中的几个成员如下所示: AppSettings属性:提供访问添加到<appSettings>节中的自定义 信息. ConnectionStrings属性:提供访问<connectionStrings>配置项 中的信息. OpenWebConfiguration()方法:为指定的Web应用程序返回配置对 象. OpenMachineConfiguration()方法:反回对machine.config文件 进行访问的配置对象.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开发人员经常需要运行外部的程序集。

然而运行外部程序集很容易导致低效的资源利用以及降低系统安全性。

规避这类风险最好的方法就是创建应用程序域,在受保护的环境下调用程序集。

一.概述
程序集是一个逻辑容器,允许在一个进程中运行多个程序集并提供有效的隔离。

应用程序域具有以下的优点:
∙在一个应用程序中出现的错误不会影响其他应用程序。

因为类型安全的代码不会导致内存错误,所以使用应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序。

∙能够在不停止整个进程的情况下停止单个应用程序。

使用应用程序域使您可以卸载在单个应用程序中运行的代码。

注意
不能卸载单个程序集或类型。

只能卸载整个域。

∙在一个应用程序中运行的代码不能直接访问其他应用程序中的代码或资源。

为了强制实施此隔离,公共语言运行库禁止在不同应用程序域中的对象之间进行直接调用。

要在各域之间传递对象,可以复制这些对象,或通过代理访问这些对象。

如果复制对象,那么对该对象的调用为本地调用。

也就是说,调用方和被引用的对象位于同一应用程序域中。

如果通过代理访问对象,那么对该对象的调用为远程调用。

在此情况下,调用方和被引用的对象位于不同的应用程序域中。

域间调用所采用的远程调用基础结构与两个进程间的调用或两台计算机间的调用的基础结构相同。

因此,被引用的对象的元数据必须对于两个应用程序域均可用,以便用 JIT 正确编译该方法调用。

如果调用域对被调用对象的元数据没有访问权,则编译可能失败,并引发类型为System.IO.FileNotFound的异常。

∙代码行为的作用范围由它所在的应用程序决定。

换言之,应用程序域将提供应用程序版本策略等配置设置、它所访问的任意远程程序集的位置,以及加载到该域中的程序集的位置信息。

∙向代码授予的权限可以由代码运行所在的应用程序域来控制。

二.对应用程序域的基本操作
可通过System.Appdomain类来获取、创建应用程序域,运行程序集。

//获取当前的应用程序域
AppDomain currentApp = AppDomain.CurrentDomain;
//创建应用程序域
AppDomain MyAppDomain = AppDomain.CreateDomain("MyAppDomain");
//调用程序集
MyAppDomain.ExecuteAssembly("Assembly.exe");
//卸载程序域
AppDomain.Unload(MyAppDomain);
三.配置应用程序域
你可以通过配置程序域来为应用程序创建一个自定义的运行环境。

配置程序域最重要的一个应用就是通过限制权限来减少由低安全性引发的危险。

一个配置完美的应用程序域不仅能提供一个独立的运行环境,而且能够将运行其中的程序被入侵造成的破坏降低到最小。

1.如何为程序集提供证据(Evidence)
当你创建了一个应用程序域并调用程序集的时候,你以及完成了对主机证据的控制。

Evidence是一组关于程序集的信息,运行时依据它来决定程序集所属的代码组。

代码组翻过来决定了该程序集应有的权限。

Evidence一般包含程序集所在的目录或站点以及数字签名。

通过为程序集指定Evidence,你可以控制分配给该程序集的权限。

为了给程序集指定Evidence,首先你要创建System.Security.Policy.Evidence对象,然后在运行程序集的时候,显示地将Evidence分配给该程序集。

创建Evidence对象需要两个对象数组作为参数,一个表示主机证据(Host Evidence),另一个表示程序集证据(Assembly Evidence)。

两个参数都可以为空。

除非你已经特意的创建了一个程序集证据类,否则一般的我们只需要为Evidence对象分配主机证据即可(程序集证据为空)。

控制程序集的权限最简单的方法就是利用System.Security.Zone对象和System.Security.SecurityZone枚举来为该程序传入一个Zone证据。

实例如下:
//创建主机证据
object[] hostEvidence ={ new Zone(SecurityZone.MyComputer ) };
//设施程序集证据为空
Evidence evidence = new Evidence(hostEvidence, null);
//调用程序集并分配相应的证据
AppDomain.CurrentDomain.ExecuteAssembly(@"Assembly.exe", evidence);
当然我们也可以给应用程序域分配证据,具体的做法类似:
//创建主机证据
object[] hostEvidence ={ new Zone(SecurityZone.MyComputer ) };
//设施程序集证据为空
Evidence evidence = new Evidence(hostEvidence, null);
//创建应用程序域并分配相应的证据
AppDomain myAppDomain = AppDomain.CreateDomain("MyAppDomain", evidence);
myAppDomain.ExecuteAssembly("Assembly.exe");
SecurityZone定义了与安全策略使用的安全区域对应的整数值。

成员名称说明
Internet 对于不属于另一区域的 Internet 上的网站,使用“Internet”区域。

Intranet本地 Intranet 区域用于公司 Intranet 上的内容。

因为服务器和信息可能在公司的防火墙内,用户或公司可以给 Intranet 上的内容分配较高的信任级别。

MyComputer本地计算机区域是一个隐式区域,用于用户计算机上存在的内容。

NoZone未指定区域。

Trusted受信任站点区域用于位于此类网站的内容,这些网站比 Internet 上的其他站点更可信或更值得信赖。

用户可以使用此区域向这些站点分配更高的信任级别,以最大
限度地减少身份验证请求的数量。

这些受信任的网站的 URL 需要由用户映射到该
区域中。

Untrusted受限站点区域用于这样的网站,即,其所具有的内容在下载时已经导致过,或可能会导致问题。

这些不受信任的网站的 URL 需要由用户映射到该区域中。

2.如何配置应用程序域的属性
你可以使用AppDomainSetup类向公共语言运行时提供应用程序域的配置信息。

在创建应用程序域时,最重要的一个属性是ApplicationBase。

宿主利用其它的属性来配置特定的应用程序域。

配置一个AppDomainSetup实例不会影响任何已经存在的AppDomain,它只影响一个新建AppDomain的生成。

配置应用程序域属性:
(1)创建并配置AppDomainSetup对象
(2)将AppDomainSetup对象传给AppDomain.CreateDomain方法。

相关文档
最新文档