我在azure上有一个web角色,我想在不等待第一个请求的情况下强制执行Application_Start.
AutoStart a WCF on Azure WebRole
但是,在第一个请求到来之前,不会调用Application_Start.
我不确切地知道我是否遗漏了一些重要的东西.服务器是W2008 R2,IIS版本是7.5
谢谢!
解
我把解决方案代码放在这里.我希望能帮助别人.我刚刚添加了一个WebRole.cs,只需将该代码放入每30秒执行一次ping操作.请netice我正在浏览Service.svc,因为这是我的终端,你的终端可能是另一个终端.请注意,我要求“Endpoint1”.如果您有多个端点,则应该查看该行.
public class WebRole : RoleEntryPoint { public override void Run() { var localuri = new Uri( string.Format( "http://{0}/Service.svc",RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint ) ); while (true) { try { var request = (HttpWebRequest)WebRequest.Create(localuri); request.Method = "GET"; var response = request.GetResponse(); } catch { } System.Threading.Thread.Sleep(30000); } } public override bool OnStart() { return base.OnStart(); } }
解决方法
IIS将仅在第一个请求到达时启动.解决方法是从OnStart或您的RoleEntryPoint后代向同一个VM发送HTTP请求 – 使用WebRequest或等效类很容易.