技术学习总结日记

时间:2024.5.13

开发配置

Q1:不能选择用户访问别的主机问题。

1.如果局域网不能访问其他主机,检查防火墙是否封闭端口,如果是添加例外 比如网页访问端口是8080,SQLserver的端口是1443。

2.关于启用Guest为什么不能访问的问题: a、默认情况下,XP 禁用Guest帐户

b、默认情况下,XP的本地安全策略禁止Guest用户从网络访问

c、默认情况下,XP的 本地安全策略 -> 安全选项 里,"帐户:使用空密码用户只能进行控制台登陆"是启用的,也就是说,空密码的任何帐户都不能从网络访问只能本地登陆,Guest默认空密码......

所以,如果需要使用Guest用户访问XP的话,要进行上面的三个设置:启用Guest、修改安全策略允许Guest从网络访问、禁用3里面的安全策略或者给Guest加个密码。

有时还会遇到另外一种情况:访问XP的时候,登录对话框中的用户名是灰的,始终是Guest用户,不能输入别的用户帐号。

原因是这个安全策略在作怪(管理工具 -> 本地安全策略

-> 安全选项 -> "网络访问:本地帐户的共享和安全模式")。默认情况下,XP的访问方式是"仅来宾"的方式,那么你访问它,当然就固定为Guest不能输入其他用户帐号了。

所以,访问XP最简单的方法就是:不用启用Guest,仅修改上面的安全策略为"经典"就行了。别的系统访问XP就可以自己输入帐户信息。

至于访问2003,默认情况下2003禁用Guest,但是没有 XP 那个讨厌的默认自相矛盾的来宾方式共享,所以可以直接输入用户名密码访问。

Q2:如果加载SQL数据库失败提示只读,可能是启动SQLSERVER的 账户是网络账户,权限不够,改为本地系统就可以。

Q3:WIN2003SERVER,IIS,文件存在,在无法启动网站.

解决方法就是把WEB服务扩展中的active servers pages 给允许起来。。有时开启了.net功能是不用开的。但如是不行的话还是要开的。。

默认任何版本的 Windows Server 2003 家族, 上安装 IIS 时 IIS

只支持静态内容 (HTML)。

解决方法

当确实要使用它 警告 启用动态内容。 默认情况下, IIS 禁用动态内容出于安全考虑。

以允许 IIS 以提供动态内容, 管理员必须解锁此内容 Web 服务扩展节点在 IIS 管理器中。 要这样做, 管理员必须是启用预先存在 Web 服务扩展或添加新 Web 服务扩展。

启用 IIS 6.0 中预先存在 Web 服务扩展

要允许 IIS 来提供内容要求特定 ISAPI 或 CGI 扩展 Web 服务扩展列表, 中已列出请按照下列步骤操作: 1. 打开 IIS 管理器, 展开主控服务器节点 (即, Servername 节点), 并选择 Web 服务扩展 节点。

2. 在右窗格中的 IIS 管理器, 右击扩展对想要启用。 这是 ActiveServerPages 。

3. 单击以选中 允许 复选框。

IIS 6.0 添加新 Web 服务扩展

要允许 IIS 来提供内容要求特定 ISAPI 或 CGI 扩展 Web 服务

扩展列表, 中未列出请按照下列步骤操作: 1. 打开 IIS 管理器, 展开主控服务器节点, 然后选择 Web 服务扩展 节点。

2. 在右窗格中, IIS 管理器在 任务下 单击 添加新 Web 服务扩展 。

3. 为扩展, 添加 (例如, 在 扩展名称 框中, 键入一个友好名称 FrontPage Server Extensions ).

4. 必需文件 中, 单击 添加 , 然后选择将处理特定扩展名的请求文件的路径和名称。 选择路径和文件名之后, 单击 确定 。

5. 如果必须立即, 启用扩展单击以选中 设置扩展状态为允许 复选框。

6. 单击 确定 以保存更改。

对于通用网关接口 (CGI) 应用程序额外步骤

对于 CGI 应用程序, 也必须按照下列步骤:1. 右键单击 默认 Web 站点 或 Web 站点, 要, 然后单击 属性 。

2. 在 主目录 选项卡, 单击 执行权限 列表中 脚本和可执行文件 。

3. 确保具有对站点在您希望 Web 内容文件夹或 C:\InetPub\wwwroot 文件夹上, Everyone 组具有以下 NTFS 文件系统权限: ? 读取和执行

? 列出文件夹内容

? 读取

4. 右键单击 默认 Web 站点 或 Web 站点, 要, 然后单击 属性 。

5. 在 主目录 选项卡, 确保 DefaultAppPool , 是在 应用程序池 框中选择。 如果选中其他应用程序池, 请按照下列步骤在 IIS 管理器:a. 展开 应用程序池 , 右键单击应用程序池, 要, 并单击 属性 。

b. 在 标识 选项卡, 确保满足下列条件之一是:? 选择 网络服务 帐户。

? 所选帐户所属的 IIS _ WPG 组。

Q4:本地可以访问网站,外网无法访问.

1.在域名管理那边添加 解析,比如 ,指向本地路由器IP.

2.本地路由器将接收到80端口访问映射到本地电脑(指定IP),本地电脑防火墙开放80端口

Q5:服务器自动开机、自动关机

自动关机

如果你是在执行哪一个任务,如下载、杀毒等,你想在做完这些事后电脑自动关机,可以使用软件自带的自动关闭功能,一般像迅雷的工具里面就有一个“完在后关机”的选项,在杀毒软件里面也会有

这样的选项,相信一般的长时间运行的软件都有这个功能。如果你没有找到,你可以去网上下载一下自动关机软件,很多的,一般不到1m的大小,这些呢没有什么技术含量,我要重点介绍的是常见的自动关机命令:shutdown

windows xp的关机是由shutdown.exe程序来控制的,位于windowssystem32文件夹中。如果想让其它的windows系统也实现同样的效果,可以把shutdown.exe复制到系统目录下。比如你的电脑要在22:00关机,可以选择“开始→运行”,输入“at 22:00 shutdown -s”, 这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机,可以输入“shutdown.exe -s -t 3600”,这里表示60分钟后自动关机,“3600”代表60分钟。 设置好自动关机后,如果想取消的话,可以在运行中输入“shutdown -a”。另外输入“shutdown -i”,则可以打开设置自动关机对话框,对自动关机进行设置。

关于shutdown参数,每个都具有特定的用途,执行每一个都会产生不同的效果,比如 “-s”就表示关闭本地计算机,“-a”表示取消关机操作,下面列出了更多参数,大家可以在shutdown.exe中按需使用。

强行关闭应用程序

计算机名:控制远程计算机

显示图形用户界面,但必须是shutdown的第一个选项

注销当前用户

关机并重启

-t 时间:设置关机倒计时

消息内容:输入关机对话框中的消息内容(不能超127个字符) 具体列子:

指定系统在22分钟后自动关闭:点击“开始→运行”,在“打开”中输入命令“shutdown -s -t 1320”(注意:引号不输入,参数之间有空格,1320的单位是秒),单击“确定” 按钮即可。

指定系统在某个时间(比如12:00)自动关闭:在“打开”中输入命令 “at 12:00 shutdown -s”即可。

取消定时关机:在“打开”中输入命令“shutdown -a”即可。 飞月认为很有用的是“-i”参数,可以调出“远程关机对话框”, 能方便地实现局域网内计算机的远程关机,

开始-程序-附件-系统工具-计划任务-添加任务计划-下一步-浏览 -c:windowssystem32shadow.exe-下一步-选好要关机的时间,下一步-输入用户名和密码,只要是系统里有的用户就行,但一定要有密码, 没有也要设一个,下一步,选上“在完成时打开此任务的高级属性”,在运行栏后面加上“ -s”引号不要哦。

接下来介绍如何自动开机。

自动开机并不像自动关机那么简单,它是须要主板BIOS的支持的。要实现自动开机必须保证这三点:

1.计算机主板必须有“resume by alarm”功能才能实现定时开机;

2.要实现定时正常开机,必须取消开机password功能;

最关键的一点是要接通主机电源。

通过cmos设置实现定时开机的设置过程如下:首先进入“cmos setup”程序(大多数主板是在计算机启动时按del键进入);然后将光条移到“power management setup”选项上,回车进入其子菜单;再将“resume by alarm”项设置成“enabled”,并在“date(of month)alarm”项中设置每月开机日期(0表示每天,1表示每月1日,2表示每月2日,??),在“time(hh:mm:ss)alarm”项中设置开机时间;最后保存设置,重新启动,当关闭计算机后,你的计算机将在你规定的时刻自动启动

开发技术

Q1.在web.config中设置了 <sessionState mode= "StateServer " stateConnectionString= "tcpip=127.0.0.1:42424 " 总是报错。

1. 看下 管理-服务,查看ASP.NET state server 是否有开启。

Q2.如何让JS脚本运行时可以调试。

第一步:在IE的“Internet设置”中选择“高级”——“安全”——“启用集成windows身份验证”(这一步很重要!!!)

第二步:同样在“Internet设置”中把“禁止脚本调试”的勾去掉 第三步:用调试模式启动程序

第四步:在vs.net的菜单选择“调试”——“窗口”——“运行文档”

第五步:在“运行文档”窗口中双击要调试的文档

第六步:在该文档中需要的脚本开始调试的位置设置断点 第七步:自己操作,令程序运行到断点处,余下的就是调试程序了,我也不多说了。

性能:

Q: DataGrid的性能。

A: DataGrid的第二个缺陷是它的性能。在三种数据控件中,DataGrid是相对性能最差的。由DataGrid所生成的ViewState将会相当庞大,特别是在DataGrid含有较多的行时。当然,你也可以关闭ViewState功能,但代价是你将不能使用排序、分页以及记录编辑等功能。

DataList和Repeater中,我们会看到它们的性能将优于DataGrid

ASP.NET2.0去掉了datagrid,换成更好用的GridView,这个是datagrid的升级版

网页压缩传输:

IIS启用gzip

现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是相当可观的。如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了。

IIS6已经内建了Gzip压缩的支持,可惜,没有设置更好的管理界面。所以要打开这个选项,还要费些功夫。

首先,如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃。然后在IIS管理器中,“网站”上面右键-属性,不是下面的某个站点,而是整个网站。进入“服务”标签,选上启用动态内容压缩,静态内容压缩。

然后选中网站下面那个服务器扩展,新建一个服务器扩展。名字无所谓,下面的添加文件的路径是:

c:\windows\system32\inetsrv\gzip.dll,然后启用这个扩展。

这时候静态内容是可以压缩的,但是对于动态内容,aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方,这时候只能去修改它的配置文件了。

在 c:\windows\system32\inetsrv\下面有个MetaBase.xml文件,可以用记事本打开,找到IIsCompressionScheme,有三个相同名字的段,分别是deflate,gzip,Parameters,第三段不用管它,前两段有基本相同的参数,在这两段的参数HcScriptFileExtensions下面都加上一行aspx,如果你有其它的动态程序要压缩,也加在这里。HcDynamicCompressionLevel改成9,(0-10,9是性价比最高的一个)。

Q:ASP.NET应用程序的执行流程大体如下:

A:

Application_Start(Object sender, EventArgs e)

Session_Start(Object sender, EventArgs e)

Application_BeginRequest(Object sender, EventArgs e)

Application_AuthenticateRequest(Object sender, EventArgs e)

this.FrameworkInitialize();

try

{

base.InitRecursive(null);

//递归执行Init()事件,就是当前控件及其子控件的Init()事件。

//也就是递归执行控件树的Init()是事件。Load,PreRender与之相似 //注意OnInit()是方法,而Init()是事件,这一点和Delphi不同。

if (this.IsPostBack)

{

this.LoadPageViewState();

this.ProcessPostData(this._requestValueCollection, true);

}

base.LoadRecursive();

if (this.IsPostBack)

{

this.ProcessPostData(this._leftoverPostData, false);//获取客户端更新

this.RaiseChangedEvents();//使类似CheckBox、TextBox等的change事件能触发

this.RaisePostBackEvent(this._requestValueCollection);//触发定制事件

}

base.PreRenderRecursiveInternal();

this.SavePageViewState();

base.RenderControl(this.CreateHtmlTextWriter(this.Response.Output));

// RenderControl-> Render(writer)-> RenderChildren(writer)

//没看懂RenderControl是如何执行的,有时间时我慢慢研究一下,不过还是请各位先指教一下。

}

catch (ThreadAbortException)

{

base.UnloadRecursive(true);

return;

}

【转】IIS HTTP500错误以及COM+应用程序8004e00f错误的解决方法

今天想试试IIS,虽然是内网,没法把网站发布到网上。在WinXP SP2上安装IIS,一切很顺利,然后设置好服务器,浏览htm页都很正常,但当我打开.asp页的时候,总是说http500错误,然后就无法解析asp文件。按照网上的方法,主要都是说IWAM账号在ActiveDirectory、IISmetabase数据库和COM+应用程序三处的密码无法同步,解决方法也很简单,大致有一下三个步骤:1、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里]

2、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:

c:\inetput\adminscripts>adsutil set w3svc/wamuserpass "yourpassword"

3、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:

c:\inetput\adminscripts>cscript synciwam.vbs -v

,但是在进行第三步操作时总是报8004e00f错误。

后来在系统里不断的乱看,发现MSDTC服务不正常,于是先从这里下手,具体的解决方法如下:

1、首先进入组件服务,查看组件服务/计算机/我的电脑/COM+应用程序,结果报错“COM+ 无法与 Microsoft 分布式事务协调程序交谈”,无法查看里面的对象。

2、进入事件查看器,发现msdtc服务没有正常启动。

3、删除注册表中的键:

? HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC

? HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC

? HKEY_CLASSES_ROOT\CID

4、停止MSDTC服务:net stop msdtc

5、卸载MSDTC服务:

技术学习总结日记

msdtc -uninstall

6、重新安装MSDTC服务:msdtc -install

7、确认在事件查看器中msdtc服务已经正常启动[这步很关键,如果没有,重新启动下电脑看看]

8、重新设置IIS的IWAM账号密码。[在计算机管理中的用户管理里]

9、同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:

c:\inetput\adminscripts>adsutil set w3svc/wamuserpass "yourpassword"

10、同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:

c:\inetput\adminscripts>cscript synciwam.vbs -v

403错误

删除安全限制。

参考:IIS安装测试错误详解

很多朋友在安装好IIS之后,测试的时候会出现各种问题,这里针对我们常见的问题做一下分析,常见错误代码为403和405.这个就代表IIS本身的问题了,与程序无关

错误代码:403

这就表示IIS服务器出现错误,表示您没有权限访问或是服务器配置错误,请尝试以下操作:

1、查看网站属性——文档

看看启用默认文档中是否存在:index.asp index.htm index.html (最好全都有,没有可添加)

2、查看网站属性——主目录

A、本地路径是否指定正确

B、是否勾选“脚本资源访问”?

C、是否勾选“读取”?

D、执行权限:纯脚本

3、查看网站属性——目录安全性——编辑

A、是否勾选“匿名访问”?

B、用户名:IUSR_您的计算机名(不对,就点浏览选择)

C、密码不用改,勾选“允许IIS控制密码”就可以了

D、其它不用选

4、查看网站属性——网站

A、IP地址:全部未分配 或者 选择一个

B、TCP端口:80 (最好不要改,改了访问方法就不一,特别提醒:有些软件会占用80端口,端口被占就启动不了IIS,例如:讯雷)

5、打开控制面板——管理工具——计算机管理——本地用户和组——用户

A、看看“IUSR_您的计算机名”此用户有没有启动,必须启动(说明:有红色的×表示没有启动)

B、看看“IWAM_您的计算机名”此用户有没有启动,必须启动(说明:有红色的×表示没有启动)

C、在“IWAM_您的计算机名”该用户上按右键——设置密码(密码要记住,后面还需要用上该密码)

6、打开控制面板——管理工具——组件服务——组件服务——计算机——我的电脑——COM+应用程序

A、在“IIS Out-Of-Process Pooled Applications”上按右键选择?属性?——选择?标识?,指定用户:IWAM_您计算机名(说明:可以点浏览查找);输入密码,密码上面步骤的密码。再次启动该服务,启动后它会动。

B、在“IIS In-Process Applications”上按右键选择?属性?——选择?安全性?,将?启用身份验证?勾去掉

C、在“IIS Utilities”上按右键选择?属性?——选择?安全性?,将?启用身份验证?勾去掉。 特别提醒:有些朋友的组件无法启动,可能是您优化了XP服务,也可能是病毒导致,也可能是组件出差……这些就只能靠您处理了

7、请检查“控制面板——管理工具——数据源 (ODBC)”,看看系统DSN 有没有Access数据库驱动,如果是空白的话,请添加一个。

8、如果经过上面设置还不行话的,请注册以下组件,分别把它复制到运行中:

A、regsvr32 %windir%\system32\VBscript.dll

B、regsvr32 %windir%\system32\JScript.dll

C、regsvr32 %windir%\system32\Inetsrv\Asp.dll

最后,就是测试了……(如果还不行,建议您重装IIS,重作以上操作)

错误代码:500

之所以会出现IIS500 的错误,大部分是因为账号不同步的原因,可以通过下面的方法解决:(在开始之前,先需要确保你登陆的账号有管理权限,即计算机的管理员账号)。

1.首先,我们一次打开“控制面板”——》管理工具——》计算机管理——》系统工具——》本地用户和组——》用户里面,找到一个IWAM_MACHINE 账号(MACHINE为你的计算机名),右键设置密码,如改成123456.

2.按第一步的方法进入本地用户和组管理,在“本地用户和组”——“组”里面,右键点击Users组属性,添加进NT AUTHORITY\Authenticated Users 和NT

AUTHORITY\Interactive两个用户成员,确定。

3,在C:\Inetpub\AdminScripts目录下找到adsutil.vbs,用记事本打开此文件

查找 issecureproperty = true ,将 issecureproperty = true 改为 issecureproperty = false,然后保存。

4,用win+r打开“运行”对话框,输入“cmd”回车进入命令提示符。然后将目录切换到IIS提供的内置脚本的目录,即C:\Inetpub \AdminScripts。(不知道打命令的朋友请输入:cd C:\Inetpub\AdminScripts),然后输入下面的命令:

adsutil.vbs SET w3svc/WAMUserPass "123456"

会得到如下的提示:

wamuserpass: (string) "123456"

5,在未关闭的命令提示符狂口中再次输入(如关闭了需要重新将路径改过去):

cscript synciwam.vbs -v

会出来一大堆的字符,不用管,完成了之后exit。

现在打开你的asp程序看,是不是可以正常浏览了。

下面说明下上面的每一步在干什么,为什么要做上面的那几步。

首先说明下IWAM是什么。它是安装IIS时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前缀、连接线“_”加上计算机的 NETBIOS名字组成。如我的计算机的NETBIOS名字是IVERSHUO,因此我的计算机上IWAM账号的名字就是IWAM_IVERSHUO,这一点与IIS匿名账号

ISUR_MACHINE的命名方式非常相似。

IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。按常理说,由操作系统负责的工作我们大可放心,不必担心出错,但不知是BUG还是其它什么原因,系统的对IWAM账号的密码同步工作经常失败,使三方IWAM账号所用密码不统一。当IIS或COM+应用程序使用错误IWAM的密码登录系统,启动IIS Out-Of-Process Pooled Applications时,系统会因密码错误而拒绝这一请求,导致IIS Out-Of-Process Pooled Applications启动失败,也就是我们在ID10004错误事件中看到的“不能运行服务器{3D14228D-FBE1-11D0-995D- 00C04FD919C1} ”(这里

{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled

Applications的KEY),不能转入IIS5应用程序,HTTP 500内部错误就这样产生了。 于是,我们要做的就是将这三方的密码同步起来。

上面的第一步是自己指定一个密码,因为IIS生成的密码是一个长的杂乱随机的字符串不便于后面的修改。

第二步一般不用设置,因为很多情况下默认已经是这样的了,如果不是请照着设置;

第三步不是必须的,只是为了使后面显示密码的时候显示出来的是明码而不是“***”这样的字符串;

第四步,同步IIS metabase的密码,因为有第三步我们可以看到得到密码是否修改成功; 第五步,同步COM+应用程序所用的IWAM_MYSERVER的密码。注意,这步必须在第四步完成的基础上来做。

同时,上面的第五步也可以这样做:

依次打开“控制面板”——(“性能和维护”)——“管理工具”——“组件服务”,在左边选择“控制台根目录”——“组件服务”——“计算机”——“我的电脑”——“COM+应用程序”, 然后在右边框里点右键“IIS Out-Of-Process Pooled Applications ”,选择“属性”,点“标识”选项卡,然后会看到IWAM_IVERSHUO这个用户嘛,你知道怎么做了,呵呵。

如果报错无法进com+控制台(错误代码8004E00F-COM+无法与Microsoft分布式事务协调程序),

在开始程序运行:

msdtc -resetlog

“COM+应用程序”里正常要有的应用程序一般为8个对象,如果没有IIS****项目则在控制面板/组件里重新安装IIS就会解决(这种情况大部分是因为IIS安装包的问题,可以使用我在上一篇文章中提供的IIS包再次安装看,再次提示:注意版本!)。

COM+ Explorer

COM+ QC Dead Letter Queue Listener

COM+ Utilities

IIS In-Process Applications

IIS Out-Of-Process Pooled Applications

IIS Utilities

MS Software Shadow Copy Provider

System Application

或许还有很多朋友这样做了之后还是出现了asp程序无法正常工作的情况,主要表现在不涉及到数据库的操作都能做,但是涉及到数据库的就会报错(典型的会报错为:“数据库连接出错,请检查连接字串!”),而仔细检查了数据库连接并没有错误,或者上传到了服务器一切正常,但是在本机就出现数据库无法连接,这是什么原因呢?

这种情况一般出现在系统所在的盘其文件格式为ntfs

那么,你就要进行下面的操作了,很简单,但是很关键:

打开系统盘下windows文件夹在temp文件夹上右键,属性,选择“安全”看列出来的用户里面有没有 MACHINE/IUSR_MACHINE(MACHINE是你的计算机名)这个用户。如有,选到这个用户修改其权限(至少都得有读的权限吧);如没有点击“添加”,在弹出来的对话框下

部有个“高级...”按钮,点击它,然后在出来的对话框里点击"立即查找",得到一列用户,将上面提到的 MACHINE/IUSR_MACHINE选择,确定,返回,修改其权限。

服务器不可用的解决办法。

基本上,這個情況最可能發生在第一次執行 .Net framework 2.0 ,原因不明,但底下的做法大致可以解決此問題:

1.首先開啟「命令窗口」,並切換目錄到 cd C:\Windows\Microsoft.Net\Framework\

2.在命令行執行 "net stop w3svc" 終止 w3svc 服務

3.切換到下层目錄 cd C:\Windows\Microsoft.Net\Framework\v2.0.50727\

4.執行 "aspnet_regiis.exe -ua" 卸载 .Net

5.重新安裝 .Net 到 IIS 中 执行 "aspnet_regiis.exe -i"

6.切換目錄到 cd C:\Windows\Microsoft.Net\Framework\

7.重新启動 w3svc 执行 "net start w3svc".

本文来自CSDN博客,转载请标明出处:

ViewState - ASP.NET 的一个特有存储容器

(2007-08-14 08:46:49)

转载

标签: 分类:开发技术

IT/科技

首先,我不确定是不是只有ASP.NET由ViewState,也不确认它有多特有,只是觉得这个东西对于Web开发MVC分离的进步很有帮助。

所谓的ViewState,就是用来存放关于View的State的地方。以前的存储容器包括Cookies, Session, Application, Cache, Hidden,有时候连传递变量用的QueryString也用作存储容器,但都不是专门用来存储View相关信息的地方,然而由于没有专门存放View相关信息的地方,所以人们只好乱放。不怕过期失效的变量,多数人会选择放在Session里,而且跨页面不会丢失,用户访问几个别的页面回来还能通过Session恢复本页的View。如果需要延长一些时间,而数据又不是很多的话,可以放Cookies,和Session类似。而数据真的很短,而且页面总是提交给自己的情况下,用QueryString作为一些跨页面生命周期的变量的保存方式也可以。而如果页面可以只用Post不用Get传递的话,那么Hidden也是一个很好的选择,因为Hidden容量大,不在地址留下信息。在ASP.NET当中,就是设计到大多数情况都是Post(除了直接链接),所以用Hidden存放和View相关的信息是非常适合的。

既然用Hidden存放就可以了,为什么需要ViewState这样的统一管理呢?最显然的理由就是加密。ViewState不是给用户看或者修改的信息,仅仅是因为View的状态会在页面生命周期之间丢失,所以我们要将这些信息输出到HTML再等Post的时候取回来,对ViewState加密(至少校验)能够确保View正确无误的恢复。ASP.NET内置的ViewState可以方便的设置校验和加密,只要你把可以序列化的对象存进去,它就能够自动序列化并输出到HTML,同时该对象的保存与恢复是跟控件名以及在控件树中的位置相关的,就如ASP.NET控件的其他特性一样,确保了树中不同位置的同ID控件的数据不会被混淆。简而言之,ViewState是保存跨页面生命周期有关变量的最好容器,但它又不能够跨出页面范围称为会话变量的容器(那应该是Session负责的哦),所以是真正符合其名称用来保存View的State的。

有很多ASP.NET的新手不知道ViewState的用途,认为它是ASP.NET的内部对象,平时还是仅用ASP那套公开的对象好了,那就会带来很多麻烦。例如有GridA和GridB两个页面,点击一个条目查看明细都回转到Details页面,同时Details页面要提供返回原来页面的途径(包括原本GridView所浏览到的分页)。如何存储原本页面的状态呢,包括它来自GridA还是GridB以及原来的GridView所在的分页?有人选择用QueryString传递给Details页面,让Details页面构造返回链接时再通过QueryString把状态传回去。显然,原来页面的状态不是对Details的Query(查询),那么用QueryString传递给Details页面是不合适的。也有人选择用Session传递,但是这个状态仅仅做一次传递,难道我对你说一句话也算是Session(会话)?当然不算。用Hidden是一个方法,但是基于我上面所说的ViewState对Hidden的改良,在这种情况下就应该用ViewState作为原本GridA或GirdB的View状态的保存方式,并且在经过Details页面返回之后再还原。需要说明的是,只有ASP.NET 2.0才在内部支持跨页面PostBack,ASP.NET 1.x不支持跨页面PostBack,也无法跨页面接受和保持ViewState。

分析器错误信息:未能加载类型**** 收藏

技术学习总结日记

技术学习总结日记

我们在asp.net中经常会遇到一个错误页面,提示信息如题。我在此总结一些解决该问题的方法 1. 删除已经生成的dll文件,重新生成

2. 如果项目的根命名空间已经更改,则要用记事本打开Glob.asax文件进行命名空间

的修改

3. 如果项目中某个aspx或者ascs文件已经被删除,而有些叶面还会引用这些文件就

会导致这样的错误

4. IIS中没有为当前应用程序设置虚拟目录也会导致这样的错误

5. 如果由于某种原因,当前项目生成的dll不在本项目的bin目录下,同样会导致这

样的错误

查询SQLSERVER数据库中所有表的记录数

select distinct obj.name ,ind.rows from sysindexes ind left join sysobjects obj on ind.id = obj.id

where obj.type = 'U' order by ind.rows desc

列出SQL SERVER 所有表,字段名,主键,

类型,长度,小数位数等信息

SELECT

(case when a.colorder=1 then d.name else '' end)表名,

a.colorder 字段序号,

a.name 字段名,

(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,

(case when (SELECT count(*)

FROM sysobjects

WHERE (name in

(SELECT name

FROM sysindexes

WHERE (id = a.id) AND (indid in

(SELECT indid

FROM sysindexkeys

WHERE (id = a.id) AND (colid in

(SELECT colid

FROM syscolumns

WHERE (id = a.id) AND (name = a.name))))))) AND

(xtype = 'PK'))>0 then '√' else '' end) 主键,

b.name 类型,

a.length 占用字节数,

COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,

isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,

(case when a.isnullable=1 then '√'else '' end) 允许空,

isnull(e.text,'') 默认值

--

-- ,isnull(g.[value],'') AS 字段说明

FROM syscolumns a left join systypes b

on a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'

left join syscomments e

on a.cdefault=e.id

order by a.id,a.colorder

--left join sysproperties g

--

--on a.id=g.id AND a.colid = g.smallid

写了点javascript后,验证控件失效的问题!!!

1.声明 var xx;//把 确认按钮的 onclick原有函数保存

2. 在 body onload="xx=document.getElementById('Button1').onclick",保存原有

onclick

3.在验证函数return true的 位置 把return true去掉 ,加 上 函数 xx();

var frm=document.all;

for(var i=0;i<frm.length;i++)

{

if(frm.id=="fuDouble")

{

if(frm.value=="")

{

alert("两人共同照片不能为空!");

return false;

}

}

}

xx();

更多相关推荐:
工作日记 工作心得 工作总结

生命给的,我就接受结束了一天的实习工作,我又开始记录今天的生活。窗外是沥沥的小雨,仿佛是在诉说自己的惆怅。我翻看着以前的日记,发现二十刚出头时内心怀揣着许多理想和抱负,大多是和钱有关,也许是为了能在朋友面前不知…

日记教学总结

阳光照进现实日记教学总结日记教学在小学教学工作中起着不可忽视的作用同时日记练习对于作文水平的提高也很重要日记教学从开始的问题重重到后来思路与火花的碰撞学生的日记写作从只言片语流水账到后来的用心雕琢都是这一段时间...

日记总结

1一个输不起的人往往就是一个赢不了人2不是生活决定何种品位而是品位决定何种生活3性格本身没有好坏之分乐观和悲观对这个世界都有贡献前者发明了飞机后者发明了降落伞4雨骤打不湿鸭子的翅膀狂风吹不灭萤火的灯光5大海若没...

日记和总结

毕业论文指导训练日记第一天日记在忙完紧张的学习之后,我们即将走上社会,开始另一个生活——工作。虽然已经出去实习,但我们还是有着很沉重的任务,那就是毕业论文的写作,而在此之前,我们必须进行学习,毕业论文指导的学习…

实习日记与实习小结

实习日记20xx年x月x日小雨今天下着小雨,心情却不一样,因为刚到公司进行实习。来到这里人事部门的宋姐比较热情的为我办理了登记手续,领到了工作证、饭卡,同时公司安排了住宿,住宿条件还不错,里面的环境布置的像家…

日记总结

工作总结很快一个星期的工作又结束了这个星期的主要工作是为入驻我们平台的商家去服务首先我们教他们去学习软件的基本操作我接触的店家都还是蛮赶潮流的基本的软件操作讲解一下就可以掌握了商家有些比较忙的我们就直接帮他把产...

工作日记、个人总结书写格式

工作日记书写格式1.标题:宋体,三号,加粗,居中;2.正文:宋体,四号;3.标题下第一行,顶格,写上日期、星期、天气;4.文档名和标题同为:工作日记(一)、工作日记(二)等;5.所有标点用全角;分隔数据的除外,…

实习日记与总结

施工生产管理实习实习日记专业名称工程管理班级工程082班学号20xx00504057学生姓名梁直20xx年6月20日星期一天气晴为期三周的生产实习轰轰烈烈的开始了今天早上我带上我的生活日用品来到位于柳州鹧鸪江路...

日记以及实践总结

这次中心学校组织全镇教师到大湾小学听课学习对于我这样一个年轻教师来说是个很难得的学习机会通过这次中心学校组织的听课活动让我看到课堂上上课的那些老师从容不迫的教学风度和深厚丰富的教学语言这些深深地折服了我我感觉到...

20xx.5.2陈家堡领队总结

领队总结20xx年5月2日星期六本来昨天还在想雨后的野长城路肯定会十分湿滑的但是出乎意料的是路况和天气一样十分给力虽然没有完全按照攻略走但此次出队整体十分顺利一开始大家都不是十分熟悉但随着在公车上时闲聊以及在爬...

20xx出境领队考试目的地概述总结欧洲

欧洲1德国欧洲枢纽1匈牙利3希腊欧洲阳台3法国浪漫天地3荷兰4比利时欧洲的十字路口欧洲首都5卢森堡千堡之国钢铁王国5葡萄牙6西班牙6意大利7奥地利8芬兰千湖之国桑拿浴发源地8瑞典北欧明珠9捷克金舌雄狮9波兰中欧...

20xx寒假招生宣传江苏领队总结

20xx寒假招生宣传江苏领队总结坦白来讲此次成电的寒假招生宣传是首次在江苏开展作为刚刚进入学校的新人我们既无经验丰富的前辈指导亦无现成的学校联络基础刚刚接手这个活动的我一开始也感到颇为棘手真可谓是两眼一抹黑但我...

总结日记(26篇)