Azure上的ASP.NET Web API的第一个查询很慢

时间:2015-01-09 14:11:29

标签: asp.net vb.net azure asp.net-web-api azure-web-roles

我正在尝试设置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

  • 参考C:\ Windows \ system32 \ inetsrv \ Microsoft.Web.Administration.dll(或通过NuGet提供)
  • 添加运行时executionContext ="提升"在WebRole元素下的服务定义中

在尝试自动启动Web API时,我是否遗漏了某些内容?

1 个答案:

答案 0 :(得分:1)

您使用的是实体框架吗?如果是这样,您可能会在第一次调用DbSet时看到性能,EF必须构建模型。如果您希望在拨打服务之前发生这种情况,您可以通过启动例程拨打任何EF电话。