我在 Windows 上创建了一个 ASP.NET web api,它以 XML 形式返回一些测试数据。我已经安装了 Nuget 包 Microsoft ASP.NET Web Api Self Host,并且在 web api 中我配置了一个端口为 1234 的 Selfhost。我使用了以下文档:
https://docs.microsoft.com/de-de/aspnet/web-api/overview/older-versions/self-host-a-web-api
我以管理员身份运行 Visual Studio,还运行了 web api。在浏览器中,我输入了localhost:1234/api/product/1。有用。
我正在尝试在 Linux 上运行它。整个解决方案被复制到 Linux 并使用 MonoDevelop 执行。启动 web api 并在浏览器中输入localhost:1234/api/product/1时,没有返回任何数据。它无限加载。
这是控制器的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebServiceTest.Models;
namespace WebServiceTest.Controllers
{
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
[Route("api/product/getall")]
[HttpGet]
public IEnumerable<Product> GetAllProducts()
{
return products;
}
[Route("api/product/{id}")]
[HttpGet]
public IHttpActionResult Get(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
}
下面是 WebApiConfig 类的代码:
using System;
using System.Web.Http;
using System.Web.Http.SelfHost;
namespace WebServiceTest
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web-API-Konfiguration und -Dienste
var selfHostConfig = new HttpSelfHostConfiguration("http://localhost:1234");
// Web-API-Routen
selfHostConfig.MapHttpAttributeRoutes();
using (HttpSelfHostServer server = new HttpSelfHostServer(selfHostConfig))
{
server.OpenAsync().Wait();
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
}
}
我如何设法在 Linux 上运行 web api?