asp.net контроллеры собственного хоста webapi из другого проекта

У меня есть webapi2 проект, и я хочу самостоятельно разместить этот API в другом проекте и вызвать методы с httpClient, Вот мой код:

namespace TestSelfHosting.Controllers
{
    public class ProductsController : ApiController
    {
        [HttpGet]
        public string GetProduct()
        {
            return "test";
        }
    }
}

И код из тестового проекта:

namespace TestSelfHosting.Tests
{
    public class Startup
    {
        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);
        }
    }
}

namespace TestSelfHosting.Tests
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            const string baseAddress = "http://localhost:9000/";

            // Start OWIN host 
            using (WebApp.Start<Startup>(url: baseAddress))
            {
                // Create HttpCient and make a request to api/values 
                HttpClient client = new HttpClient();

                var response = client.GetAsync(baseAddress + "api/products").Result;

                var content = response.Content.ReadAsStringAsync().Result;
            }
        }
    }
}

Но когда я звоню client.GetAsync метод, выбрасывает ошибку (404, не найден). Этого можно добиться или я что-то не так делаю?

Я следовал учебнику отсюда

0 ответов

Вы ссылались на свой проект webapi2 в проекте с самостоятельным размещением (тестовый проект)?

Если нет, перейдите в свой собственный проект -> ссылки -> добавьте ссылку -> найдите свой webapi2.dll и добавьте его (вы должны заранее создать свой проект webapi2, чтобы "сгенерировать" файл dll)

Другие вопросы по тегам