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)