簡述WebService的使用(一)

環境:

  vs版本:vs2013

  windows版本:win7

  IIS版本:IIS7.0

  (如果覺得對您有用,請點擊右下角【推薦】一下,讓更多人看到,謝謝)

配置環境:

  主要針對于IIS

  ·首先,有很多人的機器上都沒有打開IIS服務

    控制面板->程序和功能->打開或關閉windows功能(左側,較慢,稍等)->Internet信息服務(默認打開的功能不能完全滿足之后的需要,可以全部打開或者網上查詢一下需要打開哪些)

  ·接著,在管理工具中打開Internet 信息服務(IIS)管理器

  ·最后,在網頁上輸入http://127.0.0.1后能看到IIS的主頁,就ok了。(這里隱藏了一個問題,就是先安裝了framework后安裝IIS會有一個問題,稍后解決)

  

  防火墻配置:(如不配置,在其他機器上訪問不到發布在你機器上的服務接口或者其他網站)

  網上有說直接關了防火墻,就好比人家惹到你,你非得整死他一樣。。。好慘

  打開防火墻,點擊左側菜單里面的“高級設置”,會看到有“入站規則”和“出站規則”,添加一個入站規則端口就好了,這樣,你在下面的流程中配置的那個端口,在其他位置訪問你機器上的這個端口的時候,就不會被攔住了...何必置人于死地呢!

實現過程之編寫WebService

  我使用的是vs2013,過程如下:

  1、創建空解決方案

  2、創建空Web應用程序工程(這里面沒有web服務工程...)

  3、創建Web服務(asmx)

  這是IDE會給你初始化一個開發框架,你只需要在里面加上你需要公開的方法就可以了,[WebService]特性的使用就是用來修飾將要公布出來的服務接口。(具體原理這里不講)

  代碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Services;
 6 
 7 namespace WebService
 8 {
 9     /// <summary>
10     /// WebService1 的摘要說明
11     /// </summary>
12     [WebService(Namespace = "http://MrHouJL/WebServices")]
13     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14     [System.ComponentModel.ToolboxItem(false)]
15     // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消注釋以下行。 
16     [System.Web.Script.Services.ScriptService]
17     public class WebService1 : System.Web.Services.WebService
18     {
19 
20         [WebMethod]
21         public string HelloWorld(string str)
22         {
23             return "Hello World" + str;
24         }
25         [WebMethod]
26         public string HelloWorld1()
27         {
28             return "Hello World 1";
29         }
30         [WebMethod]
31         public string HelloWorld2()
32         {
33             return "Hello World 2";
34         }
35         [WebMethod]
36         public string HelloWorld3()
37         {
38             return "Hello World 3";
39         }
40         [WebMethod(Description = "求和的方法")]
41         public double addition(double i, double j)
42         {
43             return i + j;
44         }
45         [WebMethod(Description = "求差的方法")]
46         public double subtract(double i, double j)
47         {
48             return i - j;
49         }
50         [WebMethod(Description = "求積的方法")]
51         public double multiplication(double i, double j)
52         {
53             return i * j;
54         }
55         [WebMethod(Description = "求商的方法")]
56         public double division(double i, double j)
57         {
58             if (j != 0)
59                 return i / j;
60             else
61                 return 0;
62         }
63     }
64 }
View Code

  功能編寫完畢,接下來就是發布在剛剛準備好的IIS環境上面了。

  1、右鍵點擊工程,發布,選擇一個文件夾物理路徑。

  2、打開IIS管理器

  3、右擊“網站”,添加網站,配置“網站名稱”,“物理路徑”,“IP”,“端口”OK

  4、注意:這里面的身份驗證要允許匿名,目錄瀏覽要啟用(雙擊點擊右側啟用,為了之后可以瀏覽WebService目錄)

  5、運行網站,你在瀏覽器中輸入之前輸入的IP+端口號就能訪問到目錄了(如有問題留言或者度娘)。

實現過程之訪問WebService

  在這里主要是介紹使用后臺訪問:

  首先,在工程里面右鍵點擊引用,添加服務引用,輸入IP+端口,點擊“轉到”,應該就能看到之前的所寫的服務接口了。起個名就添加進去了。

  添加webform界面,前臺代碼如下

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebService.WebForm1" %>
 2 
 3 <!DOCTYPE html>
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 8     <title></title>
 9 </head>
10 <body>
11     <form id="form1" runat="server">
12     <div>
13     
14     </div>
15         <asp:TextBox ID="TextBox1" runat="server" Height="15px" Width="50px"></asp:TextBox>
16 &nbsp;<asp:DropDownList ID="DropDownList1" runat="server">
17             <asp:ListItem>+</asp:ListItem>
18             <asp:ListItem>-</asp:ListItem>
19             <asp:ListItem>*</asp:ListItem>
20             <asp:ListItem>/</asp:ListItem>
21         </asp:DropDownList>
22 &nbsp;<asp:TextBox ID="TextBox2" runat="server" Height="15px" Width="50px"></asp:TextBox>
23 &nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text=" = " />
24 &nbsp;<asp:TextBox ID="TextBox3" runat="server" Height="15px" Width="50px"></asp:TextBox>
25     </form>
26 </body>
27 </html>
View Code

  后臺代碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 
 8 namespace WebService
 9 {
10     public partial class WebForm1 : System.Web.UI.Page
11     {
12         protected void Page_Load(object sender, EventArgs e)
13         {
14 
15         }
16 
17         protected void Button1_Click(object sender, EventArgs e)
18         {
19             string oper = DropDownList1.Text;
20             double a = Convert.ToDouble(TextBox1.Text);
21             double b = Convert.ToDouble(TextBox2.Text);
22             ServiceReference1.WebService1SoapClient ws = new ServiceReference1.WebService1SoapClient();
23             switch (oper)
24             {
25                 case "+": TextBox3.Text = ws.addition(a, b).ToString(); break;
26                 case "-": TextBox3.Text = ws.subtract(a, b).ToString(); break;
27                 case "*": TextBox3.Text = ws.multiplication(a, b).ToString(); break;
28                 case "/": TextBox3.Text = ws.division(a, b).ToString(); break;
29                 default:
30                     break;
31             }
32             Response.Write(ws.HelloWorld(TextBox3.Text));
33         }
34     }
35 }
View Code

  建議各位小主,還是自己寫寫較好。

遇到的問題

  HTTP 錯誤 500.21 - Internal Server Error處理程序“NickLeeCallbackHandler”在其模塊列表中有一個錯誤模塊“ManagedPipelineHandler”

  

?  ?原因:在安裝Framework v4.0之后,再啟用IIS,導致Framework沒有完全安裝

  解決:開始->所有程序->附件->鼠標右鍵點擊“命令提示符”->以管理員身份運行->%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

  如果還不行,可檢查IIS的應用程序池,是否使用集成模式,如果不是則改成集成模式

?

  至此,整個webservice入門就告一段落了,大家僅作參考,如有問題,快來指正...

轉載于:https://www.cnblogs.com/HJL-Blog/p/4210565.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375376.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java基礎】用LinkedList實現一個簡單棧的功能

棧的基本功能 棧的最基本功能是保障后進先出&#xff0c;然后在此基礎上可以對在棧中的對象進行彈入彈出&#xff0c;此外&#xff0c;在彈出時&#xff0c;如果棧為空&#xff0c;則會報錯&#xff0c;所以還需要提供獲取當前棧大小的方法。 構造存儲對象Student /*** Created…

Win32匯編學習[7]: 定義符號常量(=、EQU、TEXTEQU)

關于符號常量 的例子 .386 .model flat,stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data n 1 ; 偽指令只能定義整數或整數表達式…

oracle 刪除表中重復記錄,并保留一條

1、查找表中多余的重復記錄&#xff0c;重復記錄是根據單個字段&#xff08;Id&#xff09;來判斷 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、刪除表中多余的重復記錄&#xff0c;重復記錄是根據單個字段&#xff08;Id&#x…

透過WinDBG的視角看String

摘要 : 最近在博客園里面看到有人在討論 C# String的一些特性. 大部分情況下是從CODING的角度來討論String. 本人覺得非常好奇, 在運行時態, String是如何與這些特性聯系上的. 本文將側重在通過WinDBG來觀察String在進程內的布局, 以此來解釋C# String的一些特性. 問題 C# Stri…

Win32ASM學習[8]: 進制轉換的庫函數

在 masm32.inc 中有這樣幾個函數的聲明: byt2bin_ex PROTO :BYTE, :DWORD wrd2bin_ex PROTO :WORD, :DWORD dw2bin_ex PROTO :DWORD, :DWORD dw2hex_ex PROTO :DWORD, :DWORD bin2byte_ex PROTO :DWORD -------------------------------------------------------------…

SOJ 2800_三角形

真的是O不是0【看了discuss才發現。。。。。一個大寫的蠢 【題意】多個黑白三角形組成的倒三角&#xff0c;求白三角形組成的最大倒三角的面積 【分析】由于問的是倒三角個數&#xff0c;所以只需看與行數奇偶性相同的白色倒三角形&#xff0c;設v[i][j]為以第i行第j列的倒三角…

ueditor富文本編輯器 修改框寬度和高度的方法

在使用ueditor的時候&#xff0c;用的textarea <textarea name"content" id"myEditor">這里寫這條規則的回復內容</textarea> 給它加style"width:300" 屬性的時候&#xff0c;發現不起作用。 正確的方法應該是&#xff1a; <scri…

Win32ASM學習[9]: 標志寄存器

TF(Trap Flag)——位8&#xff0c;跟蹤標志。置1 則開啟單步執行調試模式&#xff0c;置0 則關閉。在單步執行模式下&#xff0c;處理器在每條指令后產生一個調試異常&#xff0c;這樣在每條指令執行后都可以查看執行程序的狀態。如果程序用POPF、POPFD 或者ET 指令設置TF 標志…

TCP多進程并發服務端 Linux socket編程入門(2)

這里很簡單的使用了fork()函數&#xff0c;在執行了fork()以后的所有代碼都會由子進程和父進程同時執行。 他們同時擁有相同的資源&#xff08;兩份拷貝&#xff09;&#xff0c;所以在子進程執行的過程中&#xff0c;子進程需要先close掉listenfd&#xff08;監聽套接字&#…

ArcEngine 打開shape文件

IWorkspaceFactory wsf new ShapefileWorkspaceFactory(); IWorkspace pWorkspace wsf.Open(filePath, 0) ;//filePath為shapefile所在的文件夾 IFeatureWorkspace pFeatureWorkspace pWorkspace ; IFeatureClass pFeatureClass pFeatureWorkspace.OpenFeatureClass(&quo…

Win32ASM學習[10]:傳送指令

匯編指令的一般性要求: 1、兩個操作數的尺寸必須一致; 2、操作數不能同為內存. --------------------------------------------------------------------------------------------------------------- ;mov ;該指令不影響 EFlags ;指令格式: (其中的 r、m、i 分別表示: 寄存器、…

SQL Server 中關于 @@error 的一個小誤區

SQL Server 中關于 error 的一個小誤區 原文:SQL Server 中關于 error 的一個小誤區在SQL Server中&#xff0c;我常常會看到有些前輩這樣寫&#xff1a; if(error<>0)ROLLBACK TRANSACTION T elseCOMMIT TRANSACTION T 一開始&#xff0c;我看見別人這么寫&#xff0c;我…

Win32ASM學習[11]:邏輯運算

--------------------------------------------------------------------------------------------------------------------------- 一.邏輯與運算指令 AND 格式: AND OPRD1,OPRD2其中目的操作數OPRD1為任一通用寄存器或存儲器操作數.源操作數OPRD2為立即數、任一通用寄存器…

JavaScript消息框

1.警告框 function myTest(){alert("這里的內容會彈出");} 2.確認框 其返回的值是 true 或 false 。 function myTest(){confirm("這里的內容會彈出");} 3.提示框 prompt prompt(參數1&#xff0c;參數2)&#xff1a;其參數1 是顯示提示要輸入的信息&…

.Net 事務

在分布式應用程序中&#xff0c;不可避免地會經常使用到事務控制。事務有一個開頭和一個結尾&#xff0c;它們指定了事務的邊界&#xff0c;事務在其邊界之內可以跨越進程和計算機。事務邊界內的所有資源都參與同一個事務。要維護事務邊界內資源間的一致性&#xff0c;事務必須…

Win32ASM學習[12]:位測試指令位掃描指令

----------------------------------------------------------------------------------------------------------------------- 一.BT 指令 格式: BT OPD,OPS 功能: 目的操作數OPD中由源操作數OPS指定的位送CF標志 說明: 1. 在指令中,目的操作數OPD只能是16/32位通用寄存器…

Android WifiDisplay分析一:相關Service的啟動

網址&#xff1a;http://www.2cto.com/kf/201404/290996.html 最近在學習Android 4.4上面的WifiDisplay(Miracast)相關的模塊&#xff0c;這里先從WifiDisplay用到的各個Service講起&#xff0c;然后再從WifiDisplaySettings里面講解打開wfd的流程。首先看下面的主要幾個Servic…

mvc controller跳轉頁面方法

1、直接Redirect后加 Controller/Action Response.Redirect("/User/Edit"); // return Redirect("/User/Edit"); return RedirectToAction("about","Home"); Response.Redirect("/User/Edit"); 2、直接r…

Win32ASM學習[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD

一. SHL、SHR、SAL、SAR: 移位指令 ---------------------------------------------------------------------------------------------------- ;SHL(Shift Left): 邏輯左移 ;SHR(Shift Right): 邏輯右移 ;SAL(Shift Arithmetic Left): 算術左移 ;SAR(Shift Ari…

angular中的表單驗證

angular中的表單驗證很強大&#xff0c; 一共有5中驗證信息&#xff0c;$valid,$invalid,$pristine,$dirty,$error. $valid-----當驗證通過的時候&#xff0c;為true,不通過的時候為false $invalid----當驗證不通過的時候&#xff0c;為true&#xff0c;通過的時候為true $pris…