C# web api上的Azure预热不起作用
我有一个网站,上面有一些用WebAPI2和.NET4.6编写的web服务。我希望在重新启动站点或启动新实例(在Azure应用程序服务上)时初始化应用程序 我在webconfig中有以下代码:C# web api上的Azure预热不起作用,c#,azure,asp.net-web-api2,azure-web-app-service,warm-up,C#,Azure,Asp.net Web Api2,Azure Web App Service,Warm Up,我有一个网站,上面有一些用WebAPI2和.NET4.6编写的web服务。我希望在重新启动站点或启动新实例(在Azure应用程序服务上)时初始化应用程序 我在webconfig中有以下代码: <configuration> ,,,, <system.webServer> ... <applicationInitialization doAppInitAfterRestart="true"> <add initializat
<configuration>
,,,,
<system.webServer>
...
<applicationInitialization doAppInitAfterRestart="true">
<add initializationPage="/" />
<add initializationPage="/api-v2/warmup/get" />
</applicationInitialization>
我看不到任何日志。不是在我重新启动站点时,也不是在我进行扩展时。
我曾尝试使用postman调用我的api,但没有任何头(只是一个开始,它工作得很好,还写入了我的日志)
我已经读过这个帖子:
-Azure和webconfig上都没有Ip限制
-webconfig中没有url重写(如https或www)
-没有涉及外部系统(如CMS),因此我不需要发送主机名,但我也尝试发送了主机名,但没有成功您在
初始化页面
模块中缺少主机名,其中主机名将是您的实际网站名,即xx.azurewebsites.net
所以我终于成功了
问题出在我的代码中,而不是设置中
启动代码中有一部分正在向请求添加检查,如果它来自本地主机,它将停止进程
所以,我们从惨痛的经历中吸取了教训!:)
检查webconfig以获取重定向和重写
检查代码中是否有做同样事情的内容,但在您发送的同一链接中清楚地显示“(这是可选的,如果没有指定,“localhost”将用作主机名)”@AshkanSirous哦,我错过了,您是否尝试过定义主机名,因为某些原因可能不起作用?是的,我让它起作用了,但它与主机名无关。有一部分代码一直在使本地主机的进程停止,以更改我应该禁用的端口,然后启动它working@AshkanSirous伟大的在这种情况下,您可以提供自己的答案并接受它
public class WarmupController : ApiController
{
[HttpGet]
[RequireRole(UserRole.None)]
[IgnoreTypeScriptGeneration]
public IHttpActionResult Get()
{
Log.Information($"Warming up started. {Environment.MachineName}");
// my warm up code
Log.Information($"Warming up succeeded. {Environment.MachineName}");
return Ok();
}
<system.webServer>
<applicationInitialization
doAppInitAfterRestart="true"
skipManagedModules="true">
<add initializationPage="/default.aspx" hostName="myhost"/>
</applicationInitialization>