Im、ASP.NET MVCおよびASP.NET WEB APIを使用してSOAプロジェクトに取り組んでいます。両方のプロジェクトは異なるソリューションの中にあるので、私たちはmvcサイトとWeb APIサイトを持ち、mvcサイトはhttpメソッド操作を使ってWeb APIサイトを呼び出します。ASP.NET MVCコントローラーからASP.NET Web APIコントローラーにデータをポストするときに保留中の要求
このシナリオを念頭に置いて、mvcコントローラからWeb APIにデータをポストするときに、奇妙な動作に直面します。 GET操作を行うと、すべて正常に動作します。ここでイムがやって何:Create.cshtml内部
> JSコード:
var create = (function() {
var _init = function (container, starter, url) {
$(starter).autocomplete({
minLength: 3,
focus: function() {
return false;
},
select: function (event, ui) {
var terms = this.value.replace(" ", "").split(',');
terms.pop();
terms.push(ui.item.label);
terms.push("");
this.value = terms.join(",");
return false;
},
search: function (event, ui) {
if (_extractLast(this.value).length < 3)
return false;
return true;
},
source: function (request, response) {
_execute(request, response, url);
}
});
};
var _extractLast = function (term) {
var termArray = term.split(',');
var lastTerm = termArray[termArray.length - 1];
return lastTerm.replace(' ', '');
};
var _execute = function (request, response, url) {
var responseCallback = response;
$.ajax({
url: '\Comunication\Contacts',
async: true,
type: 'POST',
dataType: 'json',
data: { termo: _extractLast(request.term) },
success: function (data) {
responseCallback($.map(data, function (item) {
return { label: item.Name, value: item.Id }
}));
}
});
}
return { init: _init };})();
私CSHTMLビュー内
、私は私のMVCコントローラへのAJAX呼び出しを行うjsのコードを持っています私のコントローラーの内部からは、特化したサービスレイヤーからのメソッドを呼び出して、SOAのことをしている私のWEB APIサイトにPOST要求を行います。
> MVCコントローラーコード:
public class ComunicationController : BaseController{
[HttpPost]
public async Task<JsonResult> Contacts(string termo)
{
var contacts = new ContactServices.ConsumeAsync(new ContactParameter{Term: termo});
return Json(contacts, JsonRequestBehavior.AllowGet);
}
}
>レイヤのサービスコード:
public class ContactServices{
public async Task<List<ContactsDTO>> ConsumeAsync(ContactParameter parameter)
{
using (System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient())
{
httpClient.BaseAddress = new Uri("http://localhost:123456/api/comunication/contacts");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await httpClient.PostAsJsonAsync(new Uri("http://localhost:123456/api/comunication/contacts"), parameter);
return JsonConvert.DeserializeObjectAsync<ResponseProxy<List<ContactsDTO>>>(response.Content.ReadAsStringAsync().Result).Result.data;
}
}
}
私のWeb APIのSITE要求を受け入れ、ここで予想、無懸念のようなプロセスの要求を。しかし、私のWEB API CONTROLLERからHttpResponseMessageをPOST操作でMVCサイトに返すと、要求応答はネットワークモニターに応じて永久に保留状態になります。ステータスが保留されていると私は決して要求応答を取得していない、HERESに写真です: Pending Status from My Post Request 私が言ったように、私は私のウェブAPIにリクエストをGET行うとき、すべてが正常に動作しますが、私はPOSTリクエストを行うときにこれが起こる...
はどうもありがとうございます、あなただけの私の一日行わ。私はその細部に気付かなかった。それは本当に働いた、ありがとう! –