
配置Web服务器(IIS)虚拟站点
在网站设计完成之后 需要在IE等网页浏览器中进行浏览 IIS作为当今流行的Web服务器之一 提供了强大的Internet和Intranet服务功能 可以发布 测试和维护自己的Web页和Web站点 下面以Windows 系统为例 介绍如何在IIS管理器中配置ASP NET网站虚拟站点 步骤如下
( )依次打开 控制面板 / 系统和安全 / 管理工具 / Internet信息服务(IIS)管理器 在打开的 Internet信息服务(IIS)管理器 窗口中 依次展开 网站 / Default Web Site 节点 选中该节点 单击右键 在d出的快捷菜单中选择 添加应用程序 菜单项 如图 所示
( )d出如图 所示的 添加应用程序 对话框 在该对话框中 首先输入应用程序别名 并单击 选择 按钮 选择应用程序池 然后单击 … 按钮选择ASP NET网站路径 最后单击 确定 按钮即可
( )配置完成后 选中添加的应用程序名 切换到内容视图 选中要浏览的页面 单击右键 在d出的快捷菜单中选择 浏览 菜单项 即可在IE等网页浏览器中浏览配置的ASP NET网站 如图 所示
图 选择 添加应用程序 菜单项
图 添加应用程序 对话框
图 选择 浏览 菜单项
返回目录 ASP NET开发宝典
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
ASP NET MVC 框架揭秘
lishixinzhi/Article/program/net/201311/16011
方法一
using System
using System Data
using System Configuration
using System Collections
using System Web
using System Web Security
using System Web SessionState
using System Timers
using System Net
using System IO
using System Text
using System Threading
namespace
{
public class Global : System Web HttpApplication
{
protected void Application_Start(object sender EventArgs e)
{
//定义定时器
System Timers Timer myTimer = new System Timers Timer( )
myTimer Elapsed += new ElapsedEventHandler(myTimer_Elapsed)
myTimer Enabled = true
myTimer AutoReset = true
}
void myTimer_Elapsed(object source ElapsedEventArgs e)
{
try
{
Log SaveNote(DateTime Now ToString( yyyy MM dd HH:mm:ss ) + :AutoTask is Working! )
YourTask()
}
catch (Exception ee)
{
Log SaveException(ee)
}
}
void YourTask()
{
//在这里写你需要执行的任务
}
protected void Application_End(object sender EventArgs e)
{
Log SaveNote(DateTime Now ToString( yyyy MM dd HH:mm:ss ) + :Application End! )
//下面的代码是关键 可解决IIS应用程序池自动回收的问题
Thread Sleep( )
//这里设置你的web地址 可以随便指向你的任意一个aspx页面甚至不存在的页面 目的是要激发Application_Start
string url =
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest Create(url)
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest GetResponse()
Stream receiveStream = myHttpWebResponse GetResponseStream()//得到回写的字节流
}
}
}
原理 Global asax 可以是中应用程序或会话事件处理程序 我们用到了Application_Start(应用程序开始事件)和Application_End(应用程序结束事件) 当应用程序开始时 启动一个定时器 用来定时执行任务YourTask()方法 这个方法里面可以写上需要调用的逻辑代码 可以是单线程和多线程 当应用程序结束时 如IIS的应用程序池回收 让去访问当前的这个web地址 这里需要访问一个aspx页面 这样就可以重新激活应用程序 Log类是一个记录日志的一个类 下面是测试时生成的日志信息
================================================================
: : :AutoTask is Working!
: : :AutoTask is Working!
: : :AutoTask is Working!
: : :Application End!
: : :AutoTask is Working!
: : :AutoTask is Working!
从日志中发现 当手动回收IIS的应用程序池之后 计划任务还在执行 说明我们的目的达到了
如果将Application_End中的代码注释掉 会发现Application End之后 计划任务停止工作了 如下
================================================================
: : :AutoTask is Working!
: : :AutoTask is Working!
: : :AutoTask is Working!
: : :Application End!
局限性 可以解决应用程序池自动或者手动回收 但是无法解决IIS重启或者web服务器重启的问题 当然这种情况出现的时候不多 而且如果有人访问你的网站的时候 又会自动激活计划任务了
方案二
<%@ Application Language= C# %>
<%@ import Namespace= System IO %>
<script runat= server >
void Application_Start(object sender EventArgs e)
{
// 在应用程序启动时运行的代码
System Timers Timer myTimer = new System Timers Timer( )
myTimer Elapsed += new System Timers ElapsedEventHandler(OnTimedEvent)
myTimer Interval =
myTimer Enabled = true
}
void Application_End(object sender EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender EventArgs e)
{
// 在会话结束时运行的代码
// 注意: 只有在 nfig 文件中的 sessionstate 模式设置为
// InProc 时 才会引发 Session_End 事件 如果会话模式设置为 StateServer
// 或 SQLServer 则不会引发该事件
}
private static void OnTimedEvent(object source System Timers ElapsedEventArgs e)
{
//间隔时间执行某动作
//指定日志文件的目录
string fileLogPath = AppDomain CurrentDomain BaseDirectory + SystemLog
string fileLogName = SoftPrj_CN_ + DateTime Now ToLongDateString() + _log txt
//定义文件信息对象
FileInfo finfo = new FileInfo(fileLogPath + fileLogName)
//创建只写文件流
using (FileStream fs = finfo OpenWrite())
{
//根据上面创建的文件流创建写数据流
StreamWriter strwriter = new StreamWriter(fs)
//设置写数据流的起始位置为文件流的末尾
strwriter BaseStream Seek( SeekOrigin End)
//写入错误发生时间
strwriter WriteLine( 发生时间: + DateTime Now ToString())
//写入日志内容并换行
//strwriter WriteLine( 错误内容: + message)
strwriter WriteLine( 错误内容: )
//写入间隔符
strwriter WriteLine( )
strwriter WriteLine()
//清空缓冲区内容 并把缓冲区内容写入基础流
strwriter Flush()
//关闭写数据流
strwriter Close()
fs Close()
}
}
</script>
方案三
<%@ Application Language= C# %>
<%@ Import Namespace= System IO %>
<%@ Import Namespace= System Threading %>
<script RunAt= server >
string LogPath
Thread thread
void WriteLog()
{
while (true)
{
StreamWriter sw = new StreamWriter(LogPath true Encoding UTF )
sw WriteLine(thread Name + : + DateTime Now ToString())
sw Close()
Thread CurrentThread Join( * )//阻止 秒
}
}
void Application_Start(object sender EventArgs e)
{
LogPath = HttpContext Current Server MapPath( log txt ) //在应用程序启动时运行的代码
thread = new Thread(new ThreadStart(WriteLog))
thread Name = 写登录日志线程
thread Start()
}
void Application_End(object sender EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender EventArgs e)
{
// 在会话结束时运行的代码
// 注意: 只有在 nfig 文件中的 sessionstate 模式设置为
// InProc 时 才会引发 Session_End 事件 如果会话模式设置为 StateServer
// 或 SQLServer 则不会引发该事件
}
lishixinzhi/Article/program/net/201311/13724问题起因
重装系统后安装VS2012,然后打开项目的时候,提示asp.net 4.0尚未在web服务器上注册,如图:
解决办法
1.首先IIS应用程序池添加 net framework4.0版本。
2.接着找到C:\Windows\Microsoft.NET\Framework\v4.0.30319 这个目录
3.然后 开始->所有程序->附件->鼠标右键点击“命令提示符”CMD->以管理员身份运行->
CD C:\Windows\Microsoft.NET\Framework\v4.0.30319
4.在当前目录下输入:aspnet_regiis.exe -i
如果出现如图所示,则证明成功了。
如果出现下面这张图的问题
则证明还得进行下面这步的 *** 作:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)