【问题标题】:Cannot start an Azure WebJob command line application (Pending restart status)无法启动 Azure WebJob 命令行应用程序(等待重新启动状态)
【发布时间】:2016-11-13 02:38:04
【问题描述】:

这是我第一次尝试在 Microsoft Azure 中开发和部署自托管的 OWIN Web API 应用程序。为了这个问题,我想尝试部署找到here 的示例应用程序。

所以我只有三个文件,Program.cs、Startup.cs 和 ValuesController.cs:

Program.cs

using Microsoft.Owin.Hosting;
using System;

namespace OwinSelfhostSample
{
    public class Program
    {
        static void Main()
        {
          string baseAddress = "http://<MYSITENAME>.azurewebsites.net/";

          // Start OWIN host 
          using (WebApp.Start<Startup>(url: baseAddress))
          {
              Console.ReadLine();
          }

        }
    }
}

Startup.cs

using Owin; 
using System.Web.Http; 

namespace OwinSelfhostSample 
{ 
    public class Startup 
    { 
        // This code configures Web API. The Startup class is specified as a type
        // parameter in the WebApp.Start method.
        public void Configuration(IAppBuilder appBuilder) 
        { 
            // Configure Web API for self-host. 
           HttpConfiguration config = new HttpConfiguration(); 
           config.Routes.MapHttpRoute( 
               name: "DefaultApi", 
               routeTemplate: "api/{controller}/{id}", 
               defaults: new { id = RouteParameter.Optional } 
           ); 

           appBuilder.UseWebApi(config); 
       } 
   } 
} 

ValuesController.cs

 using System.Collections.Generic;
using System.Web.Http;

namespace OwinSelfhostSample 
{ 
    public class ValuesController : ApiController 
    { 
        // GET api/values 
        public IEnumerable<string> Get() 
        { 
            return new string[] { "value1", "value2" }; 
        } 
    } 
 } 

因此,当我转到我的项目并选择“发布为 Azure WebJob”时,它说它已成功发布到 .azurewebsites 地址,但是当我导航到 http://.azurewebsites.net/api/values 时,我收到了消息:“您要查找的资源已被删除、名称已更改或暂时不可用。”。

如果我在本地运行它并将 Program.cs 中的 baseAddress 更改为 localhost,它可以正常工作,并且我会从控制器获得响应。

经典的 azure 门户显示我的网络作业是“等待重新启动”。

我还尝试创建一个 WebJob 项目而不是控制台应用程序,并在我的 Program.cs 和发布中进行了尝试,但这也不起作用:

 public static void Main()
    {
        string baseAddress = "http://<MYSITENAME>.azurewebsites.net/";

        var host = new JobHost();
        // The following code ensures that the WebJob will be running continuously
        using (WebApp.Start<Startup>(url: baseAddress))
        {
            host.RunAndBlock();
        }
    }

如何让我的自托管 Web api 服务器持续运行?

【问题讨论】:

    标签: c# asp.net azure azure-webjobs self-hosting


    【解决方案1】:

    我认为您可能误解了 WebJobs 的用途。它们用于执行后台工作(请参阅doc,而不是用于公开 Web API。您需要改用常规 Web 应用程序。

    请注意,所有 Azure Web 应用程序都通过 IIS,因此您需要使用 HttpPlatformHandler(但这有点不同)。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2014-05-06
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 2015-09-14
      • 1970-01-01
      相关资源
      最近更新 更多