【发布时间】: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