環境:VS2019 .net 4.0 frameworkjavascript
根據教材使用ScriptManager在JavaScript中調用Web service 時,失敗。現將過程和解決方法記錄以下:html
一、定義Web Servicejava
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace AjaxTest1 { /// <summary> /// WebService1 的摘要說明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要容許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消註釋如下行。 [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { [WebMethod] public int GetTotal(string s,int x,int y) { if (s == "+") { return x + y; } if (s== "-") { return x - y; } if (s == "*") { return x * y; } if (s == "/") { return x / y; } else { return 0; } } } }
二、定義JavaScript和.aspx頁面;ui
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AjaxTest1.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>js調用WebService實現運算器</title> <script type="text/javascript" > function RefService() { //alert(document.getElementById("Text1").value); var num1 = document.getElementById("Text1").value; var num2 = document.getElementById("Text2").value; var num3 = document.getElementById("Select1").value; //alert(document.getElementById("Select1").value); WebService1.GetTotal(num3, num1, num2, GetResult); //alert(document.getElementById("Select1").value); } function GetResult(result) { document.getElementById("Text3").value = result; //alert(result); } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="~/WebService1.asmx"/> </Services> </asp:ScriptManager> 請分別輸入用於計算的兩個整數:<br /><br /> <input id="Text1" type="text" /> <select id="Select1" name="D1"> <option value="+" selected="selected">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input id="Text2" type="text" /> <input id="Button1" type="button" value="=" onclick="RefService()" style="height:21px;width:30px"/> <input id="Text3" type="text" /> </form> </body> </html>
整個項目的目錄以下:spa
三、運行程序,點擊「=」,卻沒有任何效果:.net
四、解決方法:3d
在腳本中打上斷點,發現程序是能夠執行到14行的,執行到15行的時候,就執行不下去了code
五、在調用WebService的腳本處,加上命名空間:orm
運行成功:server
總結:多是教材上的範例年代久遠,已經不適用與VS2019了。