###前提・実現したいこと
ASP.NETでhtmlからコントローラーのメソッドをPOSTで呼び出したいです。
ASP.NETで、
・htmlファイル1つ
・コントローラー1つ
を追加したプロジェクトを作成しました。
htmlからコントローラーのメソッドを呼び出そうとしているのですが、
Visual Studioで「IIS Express」でデバッグしている時は動作するのですが、
サーバーを「ローカルIIS」にした途端に、
コンパイル エラー メッセージ: CS0016: 出力ファイル 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\jsonsample\2ab55d3a\d7a160f1\App_global.asax.ibkym4kq.dll' に書き込めませんでした -- 'ディレクトリ名が無効です。 '
というエラーメッセージが表示されます。
(アクセス権限の問題?)
Web Deployパッケージを発行し、
Windows Server 2008 R2 StandardのIISに展開してみても、
index.htmlは表示されるのですが、
コントローラー側のメソッドが呼び出されません。
(別の問題?)
ご教示願います。
###該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Security; 6using System.Web.SessionState; 7 8using System.Web.Http; 9 10namespace jsonSample 11{ 12 public class Global : System.Web.HttpApplication 13 { 14 15 protected void Application_Start(object sender, EventArgs e) 16 { 17 GlobalConfiguration.Configure(config => 18 { 19 config.Routes.MapHttpRoute( 20 name: "DefaultApi", 21 routeTemplate: "api/{controller}/{action}/{id}", 22 defaults: new { id = RouteParameter.Optional }); 23 }); 24 }
C#
1//TestController.cs 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using System.Net; 6using System.Net.Http; 7using System.Web.Http; 8using log4net; 9 10using System.ServiceModel; 11using System.ServiceModel.Activation; 12using System.ServiceModel.Web; 13 14namespace jsonSample 15{ 16 [ServiceContract(Namespace = "")] 17 [AspNetCompatibilityRequirements(RequirementsMode = 18 AspNetCompatibilityRequirementsMode.Allowed)] 19 public class TestController : ApiController 20 { 21 log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 22 23 [HttpPost] 24 [ActionName("GetJSON")] 25 [OperationContract, WebInvoke(Method = "POST")] 26 public HttpResponseMessage GetJSON() 27 { 28 JsonData json = new JsonData(); 29 json.msg = "これはテストです。"; 30 json.value = 200; 31 return Request.CreateResponse(HttpStatusCode.OK, json); 32 } 33 34 [HttpPost] 35 [ActionName("PostJSON")] 36 [OperationContract, WebInvoke(Method = "POST")] 37 public HttpResponseMessage PostJSON([FromBody]JsonData json) 38 { 39 string retJSON = "msg:" + json.msg + ", value:" + json.value.ToString(); 40 41 return Request.CreateResponse(HttpStatusCode.OK, retJSON); 42 } 43 } 44 45 // jsonを扱うクラス 46 public class JsonData 47 { 48 public string msg { get; set; } 49 public int value { get; set; } 50 } 51}
html
1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 7 <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 8 <script type="text/javascript"> 9 10 // jsonを取得 11 function getJSON() { 12 $.ajax("/api/Test/GetJSON/", { 13 type: "POST", 14 success: function (data, status, xhr) { 15 var result = "msg:" + data.msg + ", value:" + data.value; 16 $("#Result").text(result); 17 }, 18 error: function (data, status, xhr) { 19 $("#Result").text(xhr.responseText); 20 } 21 }); 22 } 23 24 // jsonを送信 -> 文字を組み立てて返答される 25 function sendJSON(msg, val) { 26 var obj = { "msg": msg, "value": val }; 27 var arg = JSON.stringify(obj); 28 $.ajax("/api/Test/PostJSON/", { 29 type: "POST", 30 datatype: "json", 31 data: arg, 32 contentType: "application/json; charset=utf-8", 33 success: function (data, status, xhr) { 34 var ret = data + ", status:" + status; 35 $("#Result").text(ret); 36 }, 37 error: function (data, status, xhr) { 38 $("#Result").text(xhr.responseText); 39 } 40 }); 41 } 42 </script> 43</head> 44<body> 45 <h1>json受け渡しテスト</h1> 46 47 <div> 48 <button onclick="sendJSON('ボタン1', 1)">送信1</button> 49 <button onclick="sendJSON('ボタン2', 2)">送信2</button> 50 <button onclick="sendJSON('ボタン3', 3)">送信3</button> 51 <br /><br /> 52 <button onclick="getJSON()">json取得</button> 53 <br /><br /> 54 <div id="Result">ここに結果が入ります</div> 55 </div> 56</body> 57</html>

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/06 14:13
退会済みユーザー
2017/06/07 00:20 編集