Web Api ブラウザからアクセスできない、Ajaxでアクセスできる、XMLHttpRequestもアクセスできない現象が発生しています。 テストするためのAPIを作成して、それはVisual Studio 2015のデフォルトで生成されたクラス WebApiのコード †自動生成されたコードなので、説明する部分以外を省略させます。 public class TestController : ApiController { // GET api/<controller>/5 public string Get(int id) { //ZXR.Core.ClientInfoContext .Current . return "value11"; } } Routesの登録 †config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); Ajaxアクセスのコード †$.ajax({ contentType: 'application/json; charset=utf-8', url: 'http://localhost:55223/api/test/get/', data: { 'id': 5 }, dataType: 'json', cache: false, crossDomain: true, type: 'GET', success: function ( data, textStatus, jqXHR) { alert(jqXHR.responseJSON); }, error: function (data, textStatus, jqXHR) { alert(data.responseJSON.Message); } }); Ajaxでは下記のURLでアクセスできるが url: 'http://localhost:55223/api/test/get/', XMLHttpRequest方式とブラウザでは、上記のようなURLはアクセスができない、下記のようなURLにしないとダメ http://localhost:55223/api/test?id=2 http://localhost:55223/api/test/get?id=2 XMLHttpRequestアクセスのコード †function getXmlHttpObject(){ if (window.XMLHttpRequest) return new XMLHttpRequest(); else if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); else { alert("XMLHttpRequest not supported!"); return null; } } function handleHttpResponse() { if (request.readyState == 4) { results = http.responseText; alert(results); } } var request; function GetState(id) { request = GetXmlHttpRequest(); request.onreadystatechange = callBack; var url = "http://localhost:55223/api/test/get?id=" + id; request.open("GET", url, true); request.send(null); } 本当にほしかったのはこういうブログだったんだ コメント: |