WEB SERVICE或者ASP.NET站点初始化问题。

ssrwf 2006-11-02 03:06:07
我们现在做的项目是基于.net webservice的在iis上,

现在想让站点启动的时候就执行一个类的方法,用来初始化(比如把db内容读到内存)

以前都是作java的,不知道.net应该怎么做?
...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssrwf 2006-11-03
  • 打赏
  • 举报
回复
注:iis启动的时候就要自动运行!
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
555555555555555555我放进去了,可是他是用户访问第一个东西,(比如WEBSERVICE)才触发的。呵呵,
peng_0_0_1983 2006-11-02
  • 打赏
  • 举报
回复
很遗憾,是在第一次调用webservice时才调用的。
不过有好消息,我刚才看了一下,webservice里确实有Global.asax和Global.asax.cs文件。在Global.asax.cs文件里,你可以把你的服务放到Global()中的一些站点初始化函数中。比如Application_Start,Session_Start,Application_AuthenticateRequest等。
public Global()
{
InitializeComponent();
}

protected void Application_Start(Object sender, EventArgs e)
{

}

protected void Session_Start(Object sender, EventArgs e)
{

}

protected void Application_BeginRequest(Object sender, EventArgs e)
{

}

protected void Application_EndRequest(Object sender, EventArgs e)
{

}

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{

}

protected void Application_Error(Object sender, EventArgs e)
{

}

protected void Session_End(Object sender, EventArgs e)
{

}

protected void Application_End(Object sender, EventArgs e)
{

}
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
peng_0_0_1983(这头猪很瘦)
这个service的构造函数什么时候被调用?是iis一启动就被调用马?
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
但是他的构造函数是等到用户连接的时候才调用,不是iis一启动就调用的,那样会很慢的,别切我有多个service阿,哎~~~~
peng_0_0_1983 2006-11-02
  • 打赏
  • 举报
回复
不想老贴代码,但我这里刚好有以前项目的代码,希望能对楼主有帮助。
public class NewsService : System.Web.Services.WebService
{
private DBClient dbClient;
private DvnBDBase dbBase = new DvnBDBase();
private DvnDBPublic dbPublic = new DvnDBPublic();

//构造函数
#region Construction
public NewsService()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();

// string Connection = "Provider=SQLOLEDB; Data Source=(local);User ID=sa ;Password=;Initial Catalog = JSNETDB";
string Connection = System.Configuration.ConfigurationSettings.AppSettings["DatabaseInfo"];

dbClient = new DBClient(Connection);
dbBase.SetDBEngine(dbClient);
dbPublic.SetDBEngine(dbClient);
}
#endregion Construction
peng_0_0_1983 2006-11-02
  • 打赏
  • 举报
回复
soryy!
webservice项目里没有global.asax,web应用程序里才有global.asax。
我只看了标题“WEB SERVICE或者ASP.NET站点初始化问题。 ”

web service 里可以在构造函数里初始化化啊,比如你的服务是test.asmx。则在后台test.asmx.cs代码里初始化。
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
shalen520(Love will keep us alive)

这个方法不太好啊,还有别的解决办法吗?
shalen520 2006-11-02
  • 打赏
  • 举报
回复
考虑使用静态构造函数来做

在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
peng_0_0_1983(这头猪很瘦)

webservice项目里没有global.asax 这个文件阿,
ssrwf 2006-11-02
  • 打赏
  • 举报
回复
jedliu(21世纪什么最贵? 人才!)
你好像没明白我问什么。

java里的SERVLET是服务器一启动,就启动的,并且可以设置启动顺序,所以可以在那里写代码,请问.NET里怎样设置最先启动的类,或者别的东西也行。我好写代码。
peng_0_0_1983 2006-11-02
  • 打赏
  • 举报
回复
1.
从解决方案资源管理器中,打开 global.asax。

2.
切换到代码视图并将下列 using 语句添加到文件顶部:

using System.Web.Security;
using System.Security.Principal;


3.
定位到 Application_AuthenticateRequest 事件处理程序并添加代码
jedliu 2006-11-02
  • 打赏
  • 举报
回复
现在想让站点启动的时候就执行一个类的方法,用来初始化(比如把db内容读到内存)

以前都是作java的,不知道.net应该怎么做?


差不多,把需要的类对象或者数据对象读出来,放到内存里。将接受的数据放到队列之类的地方。所以你在java里怎么做的,这里也可以做,只是语法不太相同而已!
lytone52 2006-11-02
  • 打赏
  • 举报
回复
没写过,不敢乱说,可以参考一下《ASP.NET 应用程序生命周期概述》
ms-help://MS.NETFramework.v20.chs/dv_ASPNETCon/html/de0d8a1c-b1bc-48e1-b246-26e32289a82f.htm,在.net framework sdk中

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧