質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

4139閲覧

aspxのpublicメソッドを実行する方法

peperonti-no328

総合スコア25

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2015/08/21 12:41

C#

1<%@ Page Language="C#" Title="" %> 2 3<%@ Import Namespace="System" %> 4<%@ Import Namespace="System.Web" %> 5<%@ Import Namespace="System.Web.Services" %> 6<%@ Import Namespace="System.Web.UI" %> 7<%@ Import Namespace="System.Web.UI.WebControls " %> 8<%@ Import Namespace="System.Data " %> 9<%@ Import Namespace="System.Data.SqlClient " %> 10<%@ Import Namespace="System.Runtime.Serialization.Json" %> 11<%@ Import Namespace="System.IO" %> 12<%@ Import Namespace="System.Web.Script.Services" %> 13<%@ Import Namespace="System.Net" %> 14<%@ Import Namespace="System.Net.Http" %> 15 16<script runat="server" language="C#"> 17 [WebMethod] 18 [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 19 public static void testMethod() 20 { 21 StringWriter stringWriter = new StringWriter(); 22 HttpResponse response = new HttpResponse(stringWriter); 23 response.Clear(); 24 response.AddHeader("Allow", "GET"); 25 response.AddHeader("Content-type", "text/json"); 26 //response.BufferOutput = true; 27 response.StatusCode = 200; // HttpStatusCode.OK; 28 string json = "{\"user\":\"test\"," + 29 "\"password\":\"bla\"}"; 30 response.Output.Write(json); 31 response.End(); 32 33 } 34</script> 35Hello world

http://localhost:XXXXX/test.aspx
でアクセスすると、「Hello world」が出力されるだけのページが表示されます。
http://localhost:XXXXX/test.aspx/testMethod
で、testMethodを実行させようとしましたが、ブレークポイントも止まらず、testMethodが実行されず、困っています。

原因や解決法など何でもいいのでご教示ください。
VisualStudio2010ExpressEdition、Debugモードで実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Webサービスとしてメソッドを公開したい場合はaspxではなくasmxです。

投稿2015/08/21 14:50

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peperonti-no328

2015/08/22 03:01

asmxは、どうやって作るのでしょうか?新しい項目の追加で、WebServiceでしょうか?
peperonti-no328

2015/08/24 06:59 編集

うまくいきませんでした。 Ajaxの結果がエラーになってしまいます。「Method Not Allowed」というエラーメッセージが表示されました。 Service1.svc.csの内容は下記の通りです。 ```C# using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Text; namespace AjaxTest { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { // HTTP GET を使用するために [WebGet] 属性を追加します (既定の ResponseFormat は WebMessageFormat.Json)。 // XML を返す操作を作成するには、 // [WebGet(ResponseFormat=WebMessageFormat.Xml)] を追加し、 // 操作本文に次の行を含めます: // WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; [OperationContract] public void DoWork() { // 操作の実装をここに追加してください } // 追加の操作をここに追加して、[OperationContract] とマークしてください [OperationContract] public static string countUp_click(int id, int count) { int num = count + 1; dynamic dataSet = new { id = id.ToString(), count = num.ToString() }; var s = new System.Web.Script.Serialization.JavaScriptSerializer(); Console.WriteLine(s.Serialize(dataSet)); return s.Serialize(dataSet); } } } ``` Web.configの内容は、下記の通りです。 ```C# <?xml version="1.0"?> <!-- ASP.NET アプリケーションを構成する方法の詳細については、 http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください --> <configuration> <connectionStrings> <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0" /> <!--<authentication mode="Forms"> <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> </authentication>--> <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> </providers> </membership> <profile> <providers> <clear/> <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> </providers> </profile> <roleManager enabled="false"> <providers> <clear/> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> </providers> </roleManager> </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="MyServiceTypeBehaviors" > <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> <services> <service name="AjaxTest.Service1"> <endpoint address="AjaxTest/Service1" behaviorConfiguration="AjaxTest.Service1AspNetAjaxBehavior" binding="webHttpBinding" contract="AjaxTest.Service1" /> </service> </services> </system.serviceModel> </configuration> ``` WebForm1.aspxのソースは下記の通りです。 ```C# <%@ Page Language="C#" %> <%@ Import Namespace="System.Collections.Generic" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Web.Services" %> <%@ Import Namespace="System.IO" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } else { } } [WebMethod] public static string countUp_click(int id, int count) { count++; var dataSet = new { id = id, count = count }; var s = new System.Web.Script.Serialization.JavaScriptSerializer(); return s.Serialize(dataSet); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Single-File Page Model</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script> </head> <body> <form id="form1" runat="server"> <div id="id1"> <input type="button" id="countUp" value="カウントアップ" /> </div> <div id="count"> </div> </form> <script type="text/javascript"> $(document).ready(function () { $("#countUp").click(function () { //var hostUrl = "WebForm1.aspx/countUp_click"; var hostUrl = "Service1/countUp_click"; var param1 = 1; var param2 = 10; $.ajax({ url: hostUrl, type: "POST", contentType: "application/json; charset=utf-8", dataType: "json", data: "{'id' : " + param1 + ", 'count' : " + param2 + " }", success: function (data) { alert("ok"); // ここのパースがキモ var jdata = JSON.parse(data.d); window.alert(jdata.id); window.alert(jdata.count); $('#count').html(jdata.count); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("error"); window.alert(XMLHttpRequest.toString()); window.alert(textStatus.toString()); window.alert(errorThrown.toString()); } }); }); }); </script> </body> </html> ```
yuba

2015/08/26 13:50

これは、ASP.NET Webサービス(拡張子.asmx)ではなくWCF Webサービス(拡張子.svc)ですか。 私が仕事で扱っていたのは前者の方だったので後者の方は全然未経験です申し訳ない… いまのVisual StudioはWCFのサービスしか作れないんですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問