我正在尝试设置ASP.NET Web API并在Azure上运行它。服务启动后的第一个查询总是很慢。之后的任何疑问都可以。
我尝试将以下代码添加到我的项目中,但它没有提高第一个查询的性能。它来自这个类似主题的答案AutoStart a WCF on Azure WebRole
Public Class WebRole
Inherits RoleEntryPoint
Public Overrides Sub Run()
Using serverManager = New ServerManager()
Dim mainSite = serverManager.Sites(RoleEnvironment.CurrentRoleInstance.Id + "_Web")
Dim mainApplication = mainSite.Applications("/")
Dim mainApplicationPool = serverManager.ApplicationPools(mainApplication.ApplicationPoolName)
mainApplicationPool("autoStart") = True
mainApplicationPool("startMode") = "AlwaysRunning"
serverManager.CommitChanges()
End Using
MyBase.Run()
End Sub
Public Overrides Function OnStart() As Boolean
Try
Using svrManager As New ServerManager
Dim appPoolName = svrManager.Sites.First.Applications.First.ApplicationPoolName
Dim appPool = svrManager.ApplicationPools(appPoolName)
appPool.ProcessModel.IdleTimeout = TimeSpan.Zero
appPool.Recycling.PeriodicRestart.Time = TimeSpan.Zero
svrManager.CommitChanges()
End Using
Catch ex As Exception
End Try
Return MyBase.OnStart()
End Function
End Class
我还使用了以下步骤来确保我应该能够使用ServerManager
在尝试自动启动Web API时,我是否遗漏了某些内容?
答案 0 :(得分:1)
您使用的是实体框架吗?如果是这样,您可能会在第一次调用DbSet时看到性能,EF必须构建模型。如果您希望在拨打服务之前发生这种情况,您可以通过启动例程拨打任何EF电话。