初学ASP.NET 知识点
1.C# 中的虚方法 和 C++中的作用一致,能让指向子类的父类指针优先到子类中寻找方法,而不是直接调用父类中的方法。
看一段例子回忆下:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Person student = new Student();
student.speak();
student.sing(); }
} class Person {
public virtual void speak() {
Console.WriteLine("person speak");
} public void sing() {
Console.WriteLine("person sing");
}
} class Student:Person
{
override public void speak()
{
Console.WriteLine("student speak");
} new public void sing() {
Console.WriteLine("student sing");
}
}
}
输出如下:

2. 在程序中使用 HttpContext.Current.Session["CurrentAdmin"] = objAdmin; 这类的与session相关的函数后,asp.net 框架会默认添加一个名为 ASP.NET_SessionId 的cookie,这个cookie有24个字符,用来让系统区分请求所对应的session。如果确实不希望这个字段出现在cookie里,可以通过调用 Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddYears(-1); 让这个cookie过期,游览器就会自动删除这个cookie。另外这个cookie是保存在内存中的,并不会在磁盘上,所以关了游览器,cookie也就没了。
3. 今天开发遇到一个bug,说的是关于assembly未正确配置,其实这个assembly在.NET中就是对应的dll文件,如果出错,就需要看看是不是在bin文件夹中缺失了某个dll。
4.今天做一个上传功能,在服务器端用的是Server.MapPath 这个方法获得路径,具体的路径是/Upload ,在默认iis express 运行环境下,没有问题,后来为了调试,把程序放到了本机的IIS上,结果上传没有错误,却取不到数据了。后来发现,这个网站被当做了子站发布在了IIS的默认网站下,那么Server.MapPath 其实返回的是http://localhost/Upload ,也就是在主站点下的upload文件夹,而不是 子站的http://localhost/webapplication/Upload. 所以上传虽然成功了,但是上传的位置错了!要解决问题,把网站作为单独主站点就可以了。
我的错误配置如下:

这种在主机端口号后,还有一个路径的写法,系统就会为我们创建子文件夹存放数据,但是运行时取到的server的path信息,会是主站点的虚拟路径。
正确的做法是,先在IIS中创建一个站点,配置好信息,之后在vs中进行配置,修改后的截图如下:

5. 今天在写Entity Framework相关代码时,没有把实体中的关联属性声明为Virtual,结果发现,无法从数据库读取关联属性了,结果全部是null,后来查看了以下文章:
这里面说到了,如果不使用virtual对 navigation 属性声明,取出的对象就不会包含navigation属性的相关内容,其实就是不会对navigation属性进行sql检索操作。但即使不声明,也可以通过其他方法读取内容。比如以下代码:
context.Votes.Include(v => v.ToUser).ToListAsync();
这样检索的话,即使 vote 的 toUser 属性没有声明为virtual,也可以被sql一次性读取出来。另外,目前.Net Core 中的 EntityFramework core 默认不支持virtual这种懒加载。
再看看stackoverflow上关于ef中的virtual的说明:
If you opt to never use the lazy loading or change tracking features of the Entity Framework (which is not the default) then you needn't declare any of your navigation properties as virtual. You are then responsible for loading those navigation properties yourself, either using what the Entity Framework refers to as "eager loading", or manually retrieving related types across multiple database queries.
6.关于IIS 中的 module 和 handler。 在web.config里,经常可以看到对module 和 handler的配置section。这里的module和handler既可以是自己写的,也可以是系统提供的。我对module的理解就是,它处理通用的逻辑,比如,身份验证,一个请求可以经过任意多个module的处理。handler针对的是某一类资源的,比如aspx,是真正的处理请求,返回数据的结构,一个请求,只能经过一个handler的处理。推荐一个文章https://www.cnblogs.com/fengzheng/p/3666774.html。
初学ASP.NET 知识点的更多相关文章
- 初学Java 精简知识点总结
		面对Java丰富的知识资料,很多初学者难免觉得迷惘,该学什么,怎么去学?下面给大家讲Java基础知识做了精简总结,来帮助你梳理学习思路,赶快看看吧! 方法/步骤1 对象的初始化(1) 非静态对象的初始 ... 
- ASP.net知识点
		2 .列举ASP.NET 页面之间传递值的几种方式. 答: (1)QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中. 如果是传递一个或多个安全性要求不高或是结构简 ... 
- ASP.Net 知识点总结(四)
		1.get和post 的区别 get是从服务器上获取数据,post是向服务器传送数据; get安全性非常低,数据显示在地址栏,post安全性较高: 但是执行效率却比Post方法好: get有字节限制为 ... 
- ASP.Net 知识点总结(三)
		1.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是.可以用任意类型. 2.<%# %> 和 <% %> 有什么区别? 答:<%# %>表示绑定 ... 
- Asp.NET 知识点总结(二)
		1.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的 hash code 编码格式. 2.swtich是否能作用在byte ... 
- Asp.NET  知识点总结(一)
		1.简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有类,私有成员, 在类的内部才可以访问. protected : ... 
- ASP.NET知识点汇总
		一 ,html属性20181113常用的居中方法1 text-align2 float3 margin (margin-left matgin-right margin-bottom margin-t ... 
- 初学JQuery相关知识点
		[简单的JQuery]注册事件的函数. $(document).ready(function(){}) [JQuery提供的函数]$.map(array,fn) 对数组array中每个元素调用fn函数 ... 
- ASP.NET 知识点总结(七)
		1.new修饰符是起什么作用new 修饰符用于声明类或类的成员,表示隐藏了基类中同名的成员.而new 操作符用于实例化一个类型new 修饰符只能用于继承类,一般用于弥补基类设计的不足new 修饰符和 ... 
随机推荐
- CSS3动画效果transition
			1.transition的浏览器支持情况 IE10+支持,IE6\7\8\9都不支持!目前,其他浏览器最新版本都支持,不需要再加前缀 -webkit- 之类的了 2. 还是一步一步说说怎么用trans ... 
- Acitiviti数据库表设计(学习笔记)
			ACT_ID_*:与权限,用户与用户组,以及用户与用户组关系相关的表 ACT_RU_*:代表了流程引擎运行时的库表,RU表示Runtime ACT_HI_*:HI表示History当流程完成了节点以后 ... 
- ctx中的body无法找到
			学习koa的时候看到廖雪峰大大的文章 其中有一段写的总是报错找不到name 代码如下 router.get('/', async (ctx, next) => { ctx.response.bo ... 
- 关于解决Tomcat服务器Connection reset by peer 导致的宕机
			org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer at ... 
- Want To Say Something
			2019.3.3 明天要演讲了,在这里为自己打一下气! 加油! 2019.3.31 停课三周的第一次写日志 怎么说这三周结交了很多八班的朋友 在竞赛上一直在学数论快学吐了,但没办法呀还是要为出 ... 
- python并发编程之多线程基础知识点
			1.线程理论知识 概念:指的是一条流水线的工作过程的总称,是一个抽象的概念,是CPU基本执行单位. 进程和线程之间的区别: 1. 进程仅仅是一个资源单位,其中包含程序运行所需的资源,而线程就相当于车间 ... 
- App自动化(2)--Python&Appium实现安卓手机九宫格解锁
			九宫格作为常见的手势密码,我们在使用的时候,是从起点开始,按住不放,然后滑动手指,直到最后一个点松开手指,如果与设置的手势密码匹配,则解锁成功. 现在大多数九宫格作为一个元素存在,很难定位到每一个点. ... 
- 一加3T 误清除data 恢复数据
			数据丢失经过:日常用机无备份直接操作:装google框架后,rootexplorer文件浏览器删除多余google应用导致无法开机:开机不成功应该重刷入google gapps包,并没有这样操作而是进 ... 
- Linux核心命令使用方法
			一.Linux命令行常用快捷键 ctrl + c cancel 取消当前的操作 ctrl + l (小写字母L) clear(命令)清空当前屏幕 ctrl + d 退出当前用户 ctrl + r 查找 ... 
- netty和protobuf的使用
			一.什么是protobuf Protobuf是google的开源项目,全称是Google Protocol Buffers,它是一个与语言无关.平台无关.可扩展的结构化数据序列化机制,类似XML,但它 ... 
