übergeben. Ich verwende eine benutzerdefinierte OAUTH in der Web-API für die Authentifizierung. Jetzt möchte ich Web API-Methode von MVC-Controller aufrufen. Web-API-Methode:Rufen Sie web api C# auf, indem Sie einen OAUTH-Token zusammen mit dem Parameter
public class UserController : ApiController
{
[Authorize(Roles = "Admin")]
[HttpPost]
[ActionName("UserById")]
public IEnumerable GetUserById(string idValue)
{
long ID = idValue != "" ? Convert.ToInt64(idValue) : -1;
using (var db = new DataModelContext())
{
IEnumerable query = (from b in db.User.Include(u => u.EmailAddresses).ToList()
where b.Id == ID
select new { b.Id, UserName = b.UserName, b.EmailAddresses }).ToList();
return query;
}
}
}
MVC-Controller:
public class PagesController : Controller
{
public ActionResult GetUserById(long id)
{
string baseUrl = Common.GetAPIUrl();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Common.GetoAuth().access_token);
var values = new JObject();
values.Add("idValue",id.ToString());
HttpContent content = new StringContent(values.ToString(), Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsJsonAsync(baseUrl + "/api/User/UserById", content).Result;
string resultJSON = response.Content.ReadAsStringAsync().Result;
return View("UserDetail",resultJson);
}
}
Einige, wie seine nicht funktioniert, ich bin nicht in der Lage Problem zu beheben, warum seine nicht funktioniert. Wenn ich API direkte URL vom Postboten anrufe, funktioniert es gut. wie http://localhost:55362/api/UserById/2 oder http://localhost:55362/api/UserById?idvalue=2. Es funktioniert nicht nur für den Aufruf von httpclient.
Bitte erklären, was Sie unter „nicht funktioniert“. Was ist los? Ist es eine Ausnahme? Wenn ja, geben Sie bitte die Details an, –
NEIN es wirft keine Ausnahme. Es gibt diese Nachricht zurück: Es wurde keine HTTP-Ressource gefunden, die die Anfrage-URI 'http: // localhost: 49963/api/User/UserById Keine Aktion auf dem Controller' Benutzer 'gefunden wurde, die den Namen' UserById 'entspricht –