知识小结(net)

1)Card.Windows.Forms.Actions

  是类似于delphi中的控件ActionList,事件列表管理器,统一管理按钮

2)程序集签名(也称为强名称签名)赋予应用程序或组件一个唯一标识,其他软件可用该标识来显式标识和引用该应用程序或组件。强名称由程序集的简单文本名、版本号、区域性信息(如果提供)以及公钥/私钥对组成。这些信息存储在一个密钥文件中;

用私有密钥为程序集签名可以确保该程序集的生产者为对应公有密钥的持有者

3)C:/WINDOWS/system32/msdtc.exe

msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器

4)如何加密Web.Config中的连接字符串

@echo off
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe -pef "connectionStrings" "E:/项目工程/其他/.NET Pet Shop 4.0/Web"
PAUSE

5)如何保护.net中的dll文件(防破解、反编译)

   强签名+混淆+加密。

   强命名程序集,可以确保你的程序集唯一,而不被篡改、冒用等;即使相同名字的程序集如果签名也会不同。

   混淆就是对编译生成的MSIL中间代码进行模糊处理,最简单的混淆是名称混淆,即将 命名空间名、类名、方法名、字段名等统统换成特殊符号或其它符号,目的就是让人看到晕为止,但是并不改变程序执行逻辑。

   使用加密工具(MaxtoCode)对混淆过的dll文件进行加密处理.

这样用Reflector.exe反编译后,发现dll文件加密的更彻底,因为主体函数内容都隐藏了。

6)消息队列(Message Queue)简介

 

利用MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信。消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的防故障方法。

MSMQ与XML Web Services和.Net Remoting一样,是一种分布式开发技术。但是在使用XML Web Services或.Net Remoting组件时,Client端需要和Server端实时交换信息,Server需要保持联机。MSMQ则可以在Server离线的情况下工作,将Message临时保存在Client端的消息队列中,以后联机时再发送到Server端处理。

显然,MSMQ不适合于Client需要Server端及时响应的这种情况,MSMQ以异步的方式和Server端交互,不用担心等待Server端的长时间处理过程。

7)使用 SqlCacheDependency 类在 ASP.NET 中缓存

ASP.NET 允许您使用SqlCacheDependency 类创建依赖于数据库中表或行的缓存项。当表中或特定行中发生更改时,带有依赖项的项便会失效,并会从缓存中移除。

8)HttpHandler

HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。

 

9)HttpModule

 

当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。

10)Application, Session, Cookie, Viewstate, Cache对象用法和区别

 

================================================================================

 

        1.Application:用于保存所有用户共用的数据信息。 在Asp.Net中类似的配置数据最好保存在Web.config文件中。如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成。尽管使用Application.Lock和 Application.Unlock方法来避免写操作的同步,但是它串行化了Application对象的请求,当网站访问量大的时候会产生严重的性能 瓶颈。因此最好不要用此对象保存大的数据集。

使用如下:
//存放信息
Application["UserNameID"]="1000";
//读取信息
String NameID=Application["UserNameID"].ToString();


2.Session:用于保存每个用户的专用信息。Session中的信息保存在Web服务器的内存中,保存的数据量可大可小。当Session超时或被关闭时将自动释放保存的数据信息。对于小量的数据Session对象保存还是一个不错的选择。

使用如下:
//存放信息
Session["UserNameID"]="1000";
//读取信息
String NameID=Session["UserNameID"].ToString();


3.Cookie: 用于保存客户浏览器请求服务器页面的请求信息,其有效期可以人为设置,而且其存储的数据量很受限制,因此不要保存数据集及其他大量数据。而且Cookie以明文方式将数据信息保存在客户端的计算机中,因此最好不要保存敏感的未加密的数据。

使用如下:
//存放信息
Response.Cookie["UserNameID"].Value="1000";
//读取信息
String NameID=Response.Cookie["UserNameID"].Value;


4.ViewState: 常用于保存单个用户的状态信息,可以保存大量的数据但是过多使用会影响应用程序的性能。所有Web服务器控件都使用ViewStat在页面回发期间保存自 己的状态信息。每个控件都有自己的ViewState,不用时最好关闭以节省资源。通过给@Page指令添加"EnableViewState= false"属性可以禁止整个页面的ViewState。

使用如下:
//存取信息
ViewState["UserNameID"]="1000";
//读取信息
string NameID=ViewState["UserNameID"].ToString();


5.Cache:用于在Http请求间保存页面和数据。它允许将频繁访问的大量服务器资源存储在内存中,当用户发出相同的请求时服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求时间。

使用如下
//存放信息
Cache["UserNameID"]="1000";
//存放信息
Cache.Insert("UserNameID","1000");
//读取信息
String UserNameID=Cache["UserNameID"].ToString();


6.隐藏域:Hidden控件属于Html类型的服务器控件,可以实现隐藏域的功能,他和其他的空间没什么区别只是不会在浏览器上显示,始终处于隐藏状态。

使用如下:
//存放信息
Hidden.Value="1000";
//读取信息
String UserNameID=Hidden.Value;


7.查询字符串:将传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。

使用如下
Response.Redirect("User.aspx?UserNameID=10000&LevelD=100");
执行上面的语句后在IE地址栏显示的URL的代码如下:
http://localhost/User.aspx?UserNameID=1000&LevelID=100
当跳转到User.aspx后,可以通过下面代码获得传递的信息:
String UserNameID,LevelD;
UserNameID=Request.Params["UserNameID"];
LevelD=Request["LevelD"];

================================================================================

Application

1.        Application用来保存所有用户共用的信息

2.        在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中。

3.        如果要使用Application要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈。

4.        不要使用Application保存大数据量信息

5.        代码:Application[“UserID”]=”test”;

       String UserName=Application[“UserID”].ToString();

Session

1.        Session用来保存每一个用户的专有信息

2.        Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右)

3.        Session信息是保存在Web服务器内存中的,保存数据量可大可小

4.        Session超时或者被关闭将自动释放数据信息

5.        由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低

6.        代码:Session[“UserID”]=”test”;

       String UserName=Session[“UserID”].ToString();

Cookie

1.        Cookie用来保存客户浏览器请求服务器页面的请求信息

2.        我们可以存放非敏感的用户信息,保存时间可以根据需要设置

3.        如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止

4.        Cookie对象的Expires属性设置为MinValue表示永不过期

5.        Cookie存储的数据量受限制,大多数的浏览器为4K因此不要存放大数据

6.        由于并非所有的浏览器都支持Cookie,数据将以明文的形式保存在客户端

7.        代码:Resopnse.Cookies[“UserID”]=”test”;

       String UserName= Resopnse.Cookies [“UserID”].ToString();

ViewState

1.        ViewState用来保存用户的状态信息,有效期等于页面的生命周期

2.        可以保存大量数据但是要慎用,因为会影响程序性能

3.        所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态

4.        不需要则关闭 @page里面设置EnableViewState=false

5.        代码:ViewState[”ID”]=”cc”;
   String ID =ViewState[“ID”].ToString();

Cache

1.        Cache用于在Http请求期间保存页面或者数据

2.        Cache的使用可以大大的提高整个应用程序的效率

3.        它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后
服务器不是再次处理而是将Cache中保存的数据直接返回给用户

4.        可以看出Cache节省的是时间—服务器处理时间

5.        Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期
应用程序重启将重新创建其实例

6.        注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert或者Add方法方法添加信息

7.        代码:Cache[”ID”]=”cc”;或者Cache.Insert(“ID”,”test”);
   String ID =Cache[“ID”].ToString();

Hidden

1.        Hidden控件属于Html类型的服务器控件,始终处于隐藏状态

2.        每一次提交的时候它会和其他服务器控件一起提交到服务器端

3.        代码如下:Hidden.Value=”cc”;
string id=Hidden.Value; 要使用Runat=server

11)Checkboxlist实现单选控制

Checkboxlist in GridView

http://www.dotnetspider.com/resources/30801-Checkboxlist-GridView.aspx

 

11)谈谈对于企业级系统架构的理解

http://www.cnblogs.com/liping13599168/archive/2011/05/11/2043127.html

 

12)用VS2005打开方案出现“此安装不支持该项目类型”

当在用VS2005打开已有项目时常会出现“此安装不支持该项目类型”。出现此原因是因为已有项目是在打了VS 2005 SP1补丁后编写的,所以在没有打补丁的.net中会出现此种情况、下面就补丁下载:

VS80sp1-KB926604-X86-CHS.exe
WebApplicationProjectSetup.msi

 

13)Start Debugging时出现

“Unable to start debugging on the web server.Debugging failed because integrated Windows authentication is not enabled.Please see Help for assistance.”

14)VS2005中的WebSite和WebApplication有何区别

http://dev.yesky.com/497/7588497.shtml

 

15):“确保已安装项目类型(.csproj)的应用程序”的解决办法

解决方法:右键点击csproj结尾的文件,选择“属性”,“打开方式”,将其定位到vs2008的exe文件上,点击“确定”就可以了。

 

16)设置iframe控件实现上下自适应,好像firefox游览器不行

 

    

 

17)

代码中执行“window.showModalDialog(......”语句时,如果出现如下错误,默认IE会有这个问题:

当前页面的脚本发生错误。

对象不支持此属性或方法 

知识小结(net)_第1张图片

请检查IE设置,并添加允许站点就行了:

IE->Internet选项->隐身->设置->添加***为可信站点

或者IE->Internet选项->隐身->勾掉打开/启用弹出窗口阻止程序

知识小结(net)_第2张图片

18)win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

给C:\Windows\temp 文件夹赋予完全控制权限,如图:

知识小结(net)_第3张图片

 

 

19)

执行s.Append("var a=window.showModalDialog('FileUpload.aspx?... 时在有些公司网络访问时出现如下错误,其它网络都很正常

An error has occurred in the script on this page

sys.webforms.pagerequestmanagerTimeoutException 服务器请求超时

 

解决办法:

 

20)ASp.net 通过IP地址或者cookie实现唯一访问

 

Cookie提供了一种在Web应用程序中存储用户特定信息的方法。例如用户第一次浏览Web网页时,Cookie将会记录下用户登录的IP地址,在Cookie的有效期内,当该用户再次发出浏览比Web站点中页面的请求时,浏览器就会和服务器交换Cookie信息,识别该用户的身份。本文章示例就是利用这个特性自定义Cookie对象来防止重复投票。

在本示例中,将客户端的IP地址保存在Cookie对象中,主要代码如下:

//创建HttpCookie类型的对象并为它分配名称为userID

HttpCookienewCookie = new HttpCookie(“userIP”) ;

//Cookie的子项赋值,即将客户端IP地址赋给Cookie的子项,并将其命名为IPaddress

newCookie.Values.Add(“IPaddress”,UserIP);

//设置Cookie的失效期

newCookie.Expires=DateTime.MinValue;

//将该Cookie添加到Cookies集合中

Response.Cookies.Add(newCookie);

注意:在编写代码时,可以根据实际情况设置Cookie的实效期。如果没有设置Cookie失效期,他们仅保存到关闭浏览器程序为止;如果将Cookie对象的Expires属性设置为MinValue,则表示Cookie永远不会过期。当然,还可以将Cookie对象的Expires属性设置为具体某一天,例如将上述代码中Cookie对象的失效期设置为当前系统时间的下一天,代码如下:

newCookie.Expires=DateTime.Now.AddDays(1);

Cookie中获取客户端的IP地址并判断该IP地址是否已访问过网络,如果已访问过,则弹出提示框,提示用户,主要代码如下:

//获取客户端IP地址

StringUserIP=Request.UserHostAddress.ToString();

//获取名为userIPCookie对象

HttpCookie oldCookie=Request.Cookies[“userIP”];

//判断该Cookie对象是否存在

If(oldCookie!=null)

{

//Cookie中获取客户端IP地址

String userIP=oldCookie.Values[“IPaddress”];

If(UserIP.Trim()==userIP.Trim())

{

Response.Write(“”);

Return;

}

 

}

 

21)ASp.net 实现IIS目录下.apk文件匿名下载,比如APK 版本更新,自行下载

 

1.打开IIS管理器(运行inetmgr)

2.点击根结点

3.在右边的"IIS"下找到”MIME类型“双击打开

4.在右边添加 文件扩展名:"apk" , MIME类型(M):"application/vnd.android"

22)引用包System.Web.DataVisualization.dll,使用MSCHART图表控件时,出现如下错误

说明:在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误消息: 未能加载文件或程序集“System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

源错误:

 

 

行 1:  <%@ page language="C#" autoeventwireup="true" inherits="ReportInfo_Report_ScoreExpress, App_Web_0qtx04lw" %>
行 2:  
行 3:  


源文件: /assvw/ReportInfo/Report_ScoreExpress.aspx    行: 1

程序集加载跟踪: 下列信息有助于确定程序集“System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”无法加载的原因。

 

 

 

 

警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

 

 

 

解决办法
1)出错的时候是用vs2012编译的,使用VS2008编译就没有问题

 

23)VS2012 的NET3.5框架使用MsChart控件
由于项目要求,VS2012需要使用NET3.5框架,但发现在VS2012只有.NET4.0框架的MsChart控件,我在微软官网下载了.NET3.5的MsChart控件安装包,但安装完了还是没显示,手工添加dll,但还是显示4.0版本的,有没有什么办法??(WIN8电脑)
22与23最终解决办法:
通过编写compiler.bat批处理去编译程序或者直接COPY源码到服务器去就没有问题了。
VS2012直接通过右击发布出去的会有问题。

 

24)“System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

数据量过大照成的内存溢出

string strTable = "

strTable += "

 

string字符拼接过多,造成内存溢出,解决办法

StringBuilde类型拼接字符串

StringBuilde.append()

25)

超时时间已到。在操作完成之前超时时间已过或服务器未响应。

 

26)

在Windows 7(32位)用.Net开发的Excel导入数据表功能,测试后一切正常,站点发布挪到Windows Server 2008(64位)上就意外了,出现错误提示,运行程序,抛出异常:未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序,搞了老半天,不知道什么原因,后来搜过了一下,才发现解决问题的办法是如此简单:


解决方法之一:
编译项目指定目标平台为x86就完了,不能用any cpu
生成->配置管理器->平台->点击Any Cpu选项卡->新建->新建平台->X86
解决方法之二:
在对应的 IIS 应用程序池中,“设置应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true。

 



27)通过服务器页面跳转

           



 


 

28)安装完office2003后运行出现如下错误:

知识小结(net)_第4张图片

解决:

需要安装Office 2003 的主要 Interop 組件 
O2003PIA.EXE 
重启一下IIS就OK了

 

29)上传*.apk文件出错,显示没有访问权限

解决:

针对写入*.apk文件的文件夹加everyone的权限

 

30)

发布网站,没有样式,加载样式和图片失败

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

解决:

webconfig配置错误,之前已经在网站根目录添加过.apk

 

       
           
       

 

 

31)未能加载文件或程序集“System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

知识小结(net)_第5张图片

解决:

初步测试是因为在.config节点加入录入下面这段,去掉就OK

 

32)GridView中经常碰到点击小图标,弹出对话框,关闭对话框时需要刷新前面的GridView数据,所以需要绑定两个事件。

OnClientClick='<%# Eval("gid_*", "window.showModalDialog("***.aspx?gid_*={0}")"  弹出对话框

οnclick='RefreshClick' 用于关闭对话框之后刷新界面

 

上面介绍的是传输单个参数,但如果出现传输多个参数怎么办?

OnClientClick='<%# String.Format("window.showModalDialog(\"***.aspx?gid_1***={0}&gid_2***={1}\",\"dialogHeight: 360px; dialogWidth: 530px; resizable: yes\")", (string)ViewState["gid_1**"], Eval("gid_2**")%>'

 

 

33)asp.net 点击完按钮后刷新页面发现还会触发buttonClick事件

当点击完按钮之后,再刷新页面,发现buttonclick事件仍然会发生,这是因为web浏览器重新发送你以前提交的信息。

    protected void Button1_Click(object sender, EventArgs e)
    {
        //加这句话是为了避免页面刷新的时候会执行上一次的按钮操作事件
        Response.Write("");
    }

在click事件里加上上述这句,便不会发生上述情况。该句把页面回归到了最初的状态

33)下载文档名称中如果有中文字符,则会乱码,用UTF-8解决,但是Firefox还是有问题,IE,Chrome,360浏览器都没有问题

                    System.IO.FileInfo file = new System.IO.FileInfo(sFileName);
                    Response.Clear();
                    Response.Charset = "UTF-8";
                    string strTemp = System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8);//解决文件名乱
                    Response.AddHeader("Content-Disposition", "attachment; filename=" + strTemp);//Server.UrlEncode(file.Name));
                    Response.AddHeader("Content-Length", file.Length.ToString());
                    Response.ContentType = "application/octet-stream";

                    Response.WriteFile(file.FullName);
                    Response.End();

34)win7 IIS7.5 定义了重复的system.web.extensions/scripting/scriptResourceHandler

知识小结(net)_第6张图片

说我的web服务下的web.config 定义了重复的 system.web.extensions/scripting/scriptResourceHandler

  分析:

  应该是 C:WindowsMicrosoft.NETFramework64v4.0.30128Configmachine.config 里与程序目录下的web.config有重复项的缘故。

知识小结(net)_第7张图片

注释掉以上几行,刷新后,再次访问网站,ok了

你可能感兴趣的:(.NET)