私の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のWeb 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}'です。 、 デフォルト:new {text = RouteParameter.Optional} 'が推奨されます。 –
'http:// localhost/api/data/abc' –
@AluanHaddadあなたは私の問題を解決しました。ありがとう^^ – Lotok