程序无法运行可能是因为您的电脑没有开启asp.net状态服务,因为程序运行时所有的session变量的保存将会用到这个服务,之所以用这个保存session变量,是因为我在测试使用本程序过程中发现session变量很容易丢失,
原因如下:
由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下:
<sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60'/>
我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小写敏感) 。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。
哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:
1、配置文件中processModel标签的memoryLimit属性
2、Global.asax或者Web.config文件被更改
3、Bin文件夹中的Web程序(DLL)被修改
4、杀毒软件扫描了一些.config文件。
5、asp.net进程序回收
更详细说明请搜索网络“session 丢失原因”
所以本程序的Session设定为mode="StateServer",用asp.net状态服务保存变量.
在asp.net的配置文件web.config中加了一个键,用于存储注册码,程序运行时读取机器码,然后再生成注册码,对照一下配置文件内的注册码,如果一致就说明程序已注册,否则未注册。
**************************
你这样做是不可能读取硬件信息的!
据我所知,运行asp.net的工作进程(winxp是aspnet.exe,win2003是w3wp.exe)默认情况下是没有权限调用System.Management命名空间中的类来读取硬件信息的,也就是说asp.net在运行的时候(程序运行在IIS上,而不是asp.net development server上)是无法读取硬件信息的。
要使asp.net工作进行有权限调用System.Management命名空间中的类来读取硬件信息的,需要赋予asp.net工作进行管理员权限,有两个途径:
1. 进程模拟,在web.config中:
<identity impersonate="true" userName="Administrator" password="密码"/>
2.指定asp.net工作运行在administrator帐户上,而不是默认的network service帐户。