내 ApiController에 액세스하는 데 문제가 있습니다. 내 API 호출을하면, 다음과 같은 응답을 얻을 :API가 ApiController를 인식하지 못합니다.
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost/myapp/api/data/abc'.",
"MessageDetail": "No action was found on the controller 'Data' that matches the request."
}
가 난 일부 데이터를 얻을 수 TopShelf 서비스에 OWIN 웹 API를 만들려고합니다. 나는 이것에 익숙하지 않기 때문에 누군가 내가 나에게 잘못을 설명 할 수 있기를 바랍니다. 내가 볼 수없는 명백한 무언가 인 것 같습니다.
시작 :
var apiHostConfiguration = new Dictionary<string, WebApiHostConfig> {{"webApi", new WebApiHostConfig {Endpoint = "/myapp" ,RequiresOAuth = false}}};
// Start OWIN host
const string baseAddress = "http://localhost";
foreach (var conf in apiHostConfiguration)
{
var app = new WebApiApp();
var opt = new StartOptions(baseAddress + conf.Value.Endpoint);
OwinApps.Add(WebApp.Start(opt, app.Configuration));
}
ApiConfig :
class WebApiApp
{
public void Configuration(IAppBuilder appBuilder)
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/",
defaults: new {}
);
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.EnableCors();
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
appBuilder.UseWebApi(config);
}
}
컨트롤러 :
[EnableCors("*", "*", "*")]
public class DataController : ApiController
{
[HttpGet]
public string Abc(string text)
{
var name = GetType().Name;
return $"{name} pings back «{text}»";
}
}
API 호출 :
http://localhost/myapp/api/data/abc
경로 템플릿에 선택적 매개 변수가 없습니다. FWIW도 매우 안락한 편입니다. 'routeTemplate : {api/{controller}/{text}} '를 기본으로하고 새로운 라우트 템플릿을 고려해보십시오. , 기본값 : new {text = RouteParameter.Optional}'이 좋습니다. –
'http : // localhost/api/data/abc' –
@AluanHaddad 당신은 내 문제를 해결했습니다. 고마워요 ^^ – Lotok