C# 从MVC项目调用Web APi
我使用C#ASP.NET MVC中的C# 从MVC项目调用Web APi,c#,asp.net-mvc,oracle,asp.net-web-api,ado.net-entity-data-model,C#,Asp.net Mvc,Oracle,Asp.net Web Api,Ado.net Entity Data Model,我使用C#ASP.NET MVC中的Oracle数据库和ADO.NET实体模型创建了Web API,一切正常。 现在,我需要创建另一个项目来调用这个API。 我创建它是因为这个Web API是应用程序的一部分,它将连接到另一个应用程序。 我在控制器中创建了一个新的MVC项目 public ActionResult GetAkontas() { IEnumerable<AkontasViewModel> akontas = null;
Oracle数据库和ADO.NET实体模型创建了Web API,一切正常。
现在,我需要创建另一个项目来调用这个API。
我创建它是因为这个Web API是应用程序的一部分,它将连接到另一个应用程序。
我在控制器中创建了一个新的MVC项目
public ActionResult GetAkontas()
{
IEnumerable<AkontasViewModel> akontas = null;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:57285/api/");
var responseTask = client.GetAsync("akontas");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = GetReadTask(result);
readTask.Wait();
akontas = readTask.Result;
}
else
{
//Error response received
akontas = Enumerable.Empty<AkontasViewModel>();
ModelState.AddModelError(string.Empty, "Server error try after some time.");
}
}
return View(akontas);
}
这是我第一次使用Oracle数据库和ADO.NET实体,但不太确定如何执行此操作,请创建一个项目,该项目将调用(使用)myAPI
更新
这是我的WebAPI项目
控制器
using System.Linq;
using System.Web.Http;
using System.Web.Http.Description;
namespace AkontasWebApi.Controllers
{
public class AkontasController : ApiController
{
//Ovo je objekat kojem se pristupa kroz bazu
public AkontasEntities db = new AkontasEntities();
// GET: api/Akontas
//Ovo je funkcija koja vraca Listu<> svih AKONTASA iz baze ne vezano po ID-u
[HttpGet]
[Route("api/Akontas")]
public IQueryable<AKONTA> GetAKONTAS()
{
return db.AKONTAS;
}
// GET: api/Akontas/5 -> ovo je routing tacnije putanja kako se koristi ova funkcija
//Ovo je funkcija koja vraca AKONTAS po ID-u
[HttpGet]
[ResponseType(typeof(AKONTA))]
public IHttpActionResult GetAKONTA(string id)
{
AKONTA aKONTA = db.AKONTAS.Find(id);
if (aKONTA == null)
{
return BadRequest("Ne postoji A_KONTO pod tim rednim brojem");
}
return Ok(aKONTA);
}
}
}
使用System.Linq;
使用System.Web.Http;
使用System.Web.Http.Description;
命名空间AkontasWebApi.Controllers
{
公共类AkontasController:ApicController
{
//我的目标是在克洛兹巴祖监狱
public AkontasEntities db=新的AkontasEntities();
//获取:api/Akontas
//我认为,在维扎诺地区,这是一个非常重要的问题
[HttpGet]
[路线(“api/Akontas”)]
公共IQueryable GetAKONTAS()
{
返回db.AKONTAS;
}
//获取:api/Akontas/5->ovo-je路由tacnije putanja kako se koristi ova funkcija
//我很高兴见到你
[HttpGet]
[响应类型(类型(AKONTA))]
公共IHttpActionResult GetAKONTA(字符串id)
{
AKONTA-AKONTA=db.AKONTAS.Find(id);
if(aKONTA==null)
{
返回请求(“Ne postoji A_KONTO pod tim rednim brojem”);
}
返回Ok(aKONTA);
}
}
}
索引视图
<br /><br />
<form>
<div class="form-group">
<label>A_KONTO</label>
<input type="text" class="form-control" aria-describedby="AKONTO BROJ" placeholder="Unesite broj AKONOTO" id='AkontasId'>
</div>
<div class="form-group">
<a class="btn btn-primary" id="aKonto" onClick='aKontoSubmit()'>Provjeri</a>
</div>
</form>
<script>
function aKontoSubmit() {
$.ajax({
type: "GET",
URL: "/api/Akontas/GetAKONTA",
data: { id: $('#AkontasId').val() },
contentType: "data/xml; charset=utf-8",
success: function (result) {
window.location.href = "http://localhost:57285/api/Akontas/" + $('#AkontasId').val();
},
error: function () {
alert("Ne postoji AKONTO pod tim rednim brojem");
}
});
}
</script>
阿_KONTO
普罗夫杰里
函数aKontoSubmit(){
$.ajax({
键入:“获取”,
URL:“/api/Akontas/GetAKONTA”,
数据:{id:$('#AkontasId').val()},
contentType:“数据/xml;字符集=utf-8”,
成功:功能(结果){
window.location.href=”http://localhost:57285/api/Akontas/“+$('#AkontasId').val();
},
错误:函数(){
警报(“Ne postoji Akoto pod tim rednim brojem”);
}
});
}
我可以推荐一些需要注意的东西:
1) 尝试在http://localhost:57285/api/
。我也有过类似的问题,但不是在IIS上,我使用的是kestrel web服务器
2) 在设置基址之后和GetAsync()
之前尝试此操作:
我有点困惑。您显示的代码是来自您的MVC项目还是来自您的Web API项目?来自我的MVC项目对不起,我也将添加我的Web API项目代码。当我有另一个问题时,我就忘了;你到底有什么问题?API没有返回数据,或者是来自client.GetAsync(…)
的状态代码从来都不是成功的状态代码…不,我只是没有获取数据。浏览器正在运行,但我没有得到任何结果
<br /><br />
<form>
<div class="form-group">
<label>A_KONTO</label>
<input type="text" class="form-control" aria-describedby="AKONTO BROJ" placeholder="Unesite broj AKONOTO" id='AkontasId'>
</div>
<div class="form-group">
<a class="btn btn-primary" id="aKonto" onClick='aKontoSubmit()'>Provjeri</a>
</div>
</form>
<script>
function aKontoSubmit() {
$.ajax({
type: "GET",
URL: "/api/Akontas/GetAKONTA",
data: { id: $('#AkontasId').val() },
contentType: "data/xml; charset=utf-8",
success: function (result) {
window.location.href = "http://localhost:57285/api/Akontas/" + $('#AkontasId').val();
},
error: function () {
alert("Ne postoji AKONTO pod tim rednim brojem");
}
});
}
</script>
client.DefaultRequestHeaders.Clear();
//Define request data format
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));