3
他のサイトからwebapiコードを打つときに次のエラーが発生します。Gettting要求URIと一致するHTTPリソースが見つかりません
返されるjsonメッセージは次のとおりです。
"Message":"No HTTP resource was found that matches the request URI
'http://localhost:47845/api/Test?samAccountName=aasdf&success=True&permissionName=bla'.","MessageDetail":
"No action was found on the controller 'Test' that matches the request."
私は直接サイトにヒットすると、 http://MyServer/ApiToHit/api/Values?samAccountName=someAccount&success=True&permissionName=MyPermission
は、私は素敵な成功の文字列を取得します。
私は次のコードでヒットすると、上記のエラーメッセージが表示されます。
using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var values = HttpUtility.UrlDecode(string.Format(
CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["PathToParameters"].ToString(),
"someAccount".ToUpper(CultureInfo.InvariantCulture),
true.ToString(),
"MyPermission".ToUpper(CultureInfo.InvariantCulture)));
lblResult.Text = string.Empty;
var newUrl = new Uri(ConfigurationManager.AppSettings["Url"].ToString() + values);
// HTTP GET
var response = await client.GetAsync(newUrl, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
//var response = await client.GetAsync(values, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
this.lblResult.Text = await response.Content.ReadAsStringAsync();
}
は、ここに私のAPIコントローラ
public class TestController : ApiController
{
// GET: api/Test
public string Get(string samAccountName, bool success, string permissionName)
{
var returnValue = "Success";
return returnValue;
}
}
は、ここに私のルート
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
'RouteConfig'に' TestController'の 'MapRoute'がありませんか?あなたが上に示したのは 'HomeController'だけです。 – Shiva
Web APIのルート設定を表示します。それは通常 'WebApiConfig.cs'にあります。 – Nkosi
私はwebApiConfig.csの値を追加しました(これはちょうどデフォルトのものです)。私はまた、devでこれはうまく動作するので、もう少しの情報を追加しましたが、私たちの生産環境では正しく動作しません。 – Lareau