vs12新建ajax,VS2012下WebService?的創建,部署和使用

WebService,即Web服務,能使得運行在不同機器上的不同應用無須借助,專門的第三方軟件或硬件,就可相互交換數據或集成.

第一次選擇WebService,是為了替代數據庫遠程連接.我們都知道當SQL允許遠程時,則要打開某一端口.但這一點在我們已經部署好的服務器上,卻是不被允許的,于是就選擇WebService來代替了.當然現在我們也可以選擇WCF來完成.不過這不是我們今天的主題.

WebService返回的數據為XML,這是我們都很熟悉的一種數據方式,大大方便了我們的工作當然,WebService給我們帶來的好處遠不止這些.我不想講得更多.相信當你能夠熟練運用WebService后,你會發現這是一把鋒利的寶刃.

對于初次接觸WebServcie的人來說,長篇理論,不如一個實例來得更實際些,我們更看重的是到底如何能夠創建一個WebService并且將其部署,和使用.

下面我將逐步的完成一個加減乘除功能的WebServic.

開發環境:VS2012

IIS環境:WINSERVER2008R2

IIS7.5

第一步:打開VS2012,新建空項目,注意選擇.NET Framework的版本.這里我選擇的是.NET Framework 4

a4c26d1e5885305701be709a3d33442f.png

新建好項目后,在項目中添加一個WebService項

a4c26d1e5885305701be709a3d33442f.png

打開這個文件,我們可以看到,代碼如下

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Services;

namespaceCalculateService

{

///

///?WebService1?的摘要說明

///

[WebService(Namespace?=?"http://tempuri.org/")]

[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

//?若要允許使用?ASP.NET?AJAX?從腳本中調用此?Web?服務,請取消注釋以下行。

//?[System.Web.Script.Services.ScriptService]

publicclassCalCulService?:?System.Web.Services.WebService

{

[WebMethod]

publicstringHelloWorld()

{

return"Hello?World";

}

}

}

將HellowWorld這段代碼刪除,修改后如下

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.Services;

namespaceCalculateService

{

///

///?CalCulService?的摘要說明

///

[WebService(Namespace?=?"http://login.wxjy.info")]

[WebServiceBinding(ConformsTo?=?WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

//?若要允許使用?ASP.NET?AJAX?從腳本中調用此?Web?服務,請取消注釋以下行。

//?[System.Web.Script.Services.ScriptService]

publicclassCalCulService?:?System.Web.Services.WebService

{

[WebMethod]

publicintSum(inta,intb)

{

returna?+?b;

}

[WebMethod]

publicintSub(inta,intb)

{

returna?-?b;

}

[WebMethod]

publicdoubleMult(doublea,doubleb)

{

returna?*?b;

}

[WebMethod]

publicdoubleDiv(doublea,doubleb)

{

returna?/?b;

}

}

}

此時,我們已經完成這個WebService的代碼部分.接下來我們要將這個WebService打包發布

在項目上點擊右鍵,點擊菜單中的發布

a4c26d1e5885305701be709a3d33442f.png

此時出現如下頁面

a4c26d1e5885305701be709a3d33442f.png

點擊下拉菜單選擇新建配置文件

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

完成以上步驟后,我們可以在設置文件生成的文件夾內看到生成的以下文件

a4c26d1e5885305701be709a3d33442f.png

現在我們要將生成的文件拷貝到已經部署好的IIS服務器上:在服務器上新建文件夾,將文件拷貝至文件夾內,并且為文件夾設置匿名權限.

a4c26d1e5885305701be709a3d33442f.png

現在我們在IIS中添加網站

a4c26d1e5885305701be709a3d33442f.png

需要注意的是:我們的這個WebService是基于.NET 4開發的.如果你的IIS默認使用的是.NET

2.0,那么發布后將會出現異常,而無法訪問.

查看一下應用程序池的右邊的應用程序池默認設置

a4c26d1e5885305701be709a3d33442f.png

提供兩種解決方案:第一種,在上面的表格中,將應用程序池默認改為4.0即可.當然這是指你的IIS中沒有需要2.0的應用程序和網站.

如果你的IIS中還有其它的需要.NET

2.0的應用程序,這時候你可以選擇第二個辦法

首先添加一個應用程序池

a4c26d1e5885305701be709a3d33442f.png

然后添加網站,將網站的應用程序池改為新建的應用程序池

a4c26d1e5885305701be709a3d33442f.png

當然,我們也可以將這個項目的.NET版本改為3.5,然后重新打包發布.那么就不需要添加對4.0的支持了.

添加完畢,啟動網站,此時可以關閉與服務器的連接了.

在本地的瀏覽器中輸入地址

此時我們可以看到以下的界面

a4c26d1e5885305701be709a3d33442f.png

此時我們已經完成了這個WebService的創建和部署.接下來,我們要在本地使用它

打開VS2012,新建項目,項目名為TestCalCul

a4c26d1e5885305701be709a3d33442f.png

在項目中添加新建項

a4c26d1e5885305701be709a3d33442f.png

在項目中引用項上點擊右鍵,選擇添加服務引用,顯示界面如下:

a4c26d1e5885305701be709a3d33442f.png

點擊左下角的高級,出現界面如下

a4c26d1e5885305701be709a3d33442f.png

點擊添加Web引用,出現界面如下

a4c26d1e5885305701be709a3d33442f.png

在URL中輸入我們發布的WebService的URL地址,系統會自動搜索到服務.并且為Web引用設置一個引用名.此引用名將是我們在項目中引用這個服務的命名空間

a4c26d1e5885305701be709a3d33442f.png

點擊添加引用,引用完成.

接下來,我們在WebForm1的cs文件中寫如下代碼

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Web;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

//不要忘記為WebService添加using引用

usingTestCalCul.MyWebService;

namespaceTestCalCul

{

publicpartialclassWebForm1?:?System.Web.UI.Page

{

protectedvoidPage_Load(objectsender,?EventArgs?e)

{

CalCulService?cal?=?newCalCulService();

doublea?=?29755;

doubleb?=?112.58;

Response.Write(cal.Mult(a,?b).ToString());

}

}

}

接下來,在瀏覽器中運行該項目.可以看到如下結果

a4c26d1e5885305701be709a3d33442f.png

此時我們已經完成了這個WebService的使用過程

其實,這個實例在開發中,沒有任何意義.

但是通過這個實例,我們可以看出WebService的復用性,簡單性是非常好的.

在VS的環境下,我們可以輕易完成一個WebService的開發過程.

而WebService返回給我們的XML數據方式,也可以充分的和JavaScript等任何一種可以處理XML的語言相結合來

完成我們的需求.

在這里要注意,當WebService連接數據庫時,我們要適當的給WebService進行加密.

加密的方式很多,你可以通過在IIS服務器上禁止匿名訪問來實現,也可以給WebService的驗證增加驗證內容,最

簡單的就是加上用戶名和密碼.

還要注意,不要用有含義的方法名稱,比如Login或者PayOrder等,回傳數據不要使用bool值,盡量使用字符串來替

代,最好在字符串中加上干擾碼等.

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

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

相關文章

pythonsql注入_python使用mysql,sql注入問題

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #連接地址 port 3306, #端口 user root, #用戶名 password , #密碼 database db, #庫名稱 charset utf8 #編碼格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #產生一個游標,…

h5優秀控件_H5前端學習的js插件大全,基本包含了大部分的前端最前沿的js插件和庫。...

布局SuperEmbed.js - 是一個Javascript庫,可檢測出網頁上的內嵌視頻并使他們能夠變成響應式元素。demoScrollReveal - ScrollReveal插件使用戶能夠無比輕松地創建桌面和移動瀏覽器的網頁滾動動畫。demoBricks.js - 是一款超快的用于固定寬度元素的“磚石”布局生成器…

js 控制鼠標_JS逆向 | 面向小白之eval混淆

所有文章首發在我的微信公眾號“逆向新手”,更多逆向系列請關注公眾號,謝謝!聲明:本文只作學習研究,禁止用于非法用途,否則后果自負,如有侵權,請告知刪除,謝謝&#xff0…

mac mysql密碼錯誤_解決mac 下mysql安裝后root用戶登錄密碼錯誤問題

使用的mac OS 10.11 安裝mysql后訪問root/root用戶失敗,網上找了一些解決辦法,下面記錄下解決方法方便以后自己查詢概述(看懂下面就不用看了):停服務:sudo /usr/local/mysql/support-files/mysql.server stop安全模式…

python獲取軟件窗口句柄_Python獲取瀏覽器窗口句柄過程解析

句柄(handle)是C程序設計中經常提及的一個術語。它并不是一種具體的、固定不變的數據類型或實體,而是代表了程序設計中的一個廣義的概念。句柄一般是指獲取另一個對象的方法——一個廣義的指針,它的具體形式可能是一個整數、一個對…

mysql 副本 同步_副本機制與副本同步

1.管理其他副本的節點稱為Follower。每當Leader將新數據寫入本地存儲d的副本時,也會將數據更改寫入日志之中。每個Follower會從Leader那里獲取修改日志,并相應地更新數據到的本地副本之中,這樣,所有的在Follower上副本的修改順序會…

mongodb 輸出數組字段_MongoDb文檔操作、索引操作

學習主題:MongoDb學習目標:掌握mongodb文檔的更新掌握mongodb文檔的刪除掌握mongodb文檔的查找掌握mongodb文檔的條件操作符掌握mongodb中的索引操作Mongodb的更新方式Update()函數更新Save()函數更新Mongodb的update更新?Update用于更新已存…

表情符號mysql utf8mb4_mysql utf8mb4與emoji表情

一 什么是Emojiemoji就是表情符號;詞義來自日語(えもじ,e-moji,moji在日語中的含義是字符)表情符號現已普遍應用于手機短信和網絡聊天軟件。emoji表情符號,在外國的手機短信里面已經是很流行使用的一種表情。手機上如何使用emoji&…

html自適應_web前端入門到實戰:HTML 文檔流,設置元素浮動,導致父元素高度無法自適應的解決方法...

元素浮動定義float 屬性定義元素在哪個方向浮動。以往這個屬性總應用于圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。如果浮動非替換元素,則要指定…

idea 遠程調試_我的天!你竟然不會用IDEA遠程調試Tomcat...

# 準備工作明確的遠程服務器的IP地址,某些我是:192.168.92.128關掉服務器防火墻:service iptables stop# 本地遠程服務器配置添加遠程服務器,如下圖復制遠程服務器自動生成的JVM參數,等下有用,如下圖&#…

mysql異步查詢 java_基于 mysql 異步驅動的非阻塞 Mybatis

雖然 spring5 也推出了 WebFlux 這一套異步技術棧,這種極大提升吞吐的玩法在 node 里玩的風生水起,但 java 世界里異步依舊不是主流,Vertx 倒是做了不少對異步的支持,但是其對于數據訪問層的封裝依舊還是挺精簡的,傳統…

跨域獲取后臺數據undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 對于同源的定義,MDN給出了這樣的解釋:如果兩個頁面的協議,端口(如果有指定)和主機都相同,則兩個頁面具有相同的源。如何確定兩個頁面是否同源,只要比較兩個頁面…

python 除數不能為零的報錯有哪些_【社區精選40】Python錯誤處理及代碼調試方法(文末贈書中獎名單)...

本文整理自愛數據學院中的問答更多精彩問答,進入下方社區網站查看http://www.lovedata.cn/invitation社區精選話題 第40期Python錯誤處理及代碼調試方法一次寫完代碼程序并能夠正常運行的概率很小很小,總會有各種各樣的錯誤bug需要處理。有的報錯簡單&a…

利用python批量查詢企業信息_python實現批量獲取指定文件夾下的所有文件的廠商信息...

本文實例講述了python實現批量獲取指定文件夾下的所有文件的廠商信息的方法。分享給大家供大家參考。具體如下:功能代碼如下:import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#輸出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL數據庫開發之一】Mac下配置安裝數據庫-MySQL

本站文章均為那么從今天開始陸續會更新數據庫和Hibernate框架的博文,也是Himi學習的歷程記錄,希望大家能共同討論和研究;OK,本篇簡單介紹安裝吧,首先到MySQL官方網站:如上圖:點擊DOWNLOAD &…

系統新模塊增加需要哪些步驟_想要吸引人流,兒童樂園需要增加哪些新設備呢...

兒童樂園是現今最火爆的一個投資項目,因為它的主要消費群體是孩子,而現在的家長們對孩子們的寵愛,基本都會答應讓孩子們去兒童樂園里面玩耍。但是兒童樂園的投資經營者也會遇見一些小問題,例如兒童樂園添加設備要怎么選擇呢&#…

php mysql 圖像_php-向/從MySQL數據庫插入/查看圖像

我在DB中插入圖像時遇到問題.該表具有以下結構:> id-> INT(3)->自動增量>名稱-> VARCHAR(30)> extension-> VARCHAR(10)[可能太短]> img-> MEDIUMBLOB插入圖像的PHP代碼為:if($_FILES[file][error]0){$result is_uploaded_f…

照片打印預覽正常打印空白_小米發布口袋照片打印機,可無墨打印3寸背膠照片...

9月11日消息,小米推出一款小米口袋照片打印機。與之前的小米米家照片打印機相比,這款新品更加小巧便攜,體積接近充電寶大小,凈重僅181g,便于隨身攜帶。小米口袋照片打印機采用ZINK無墨技術打印,即使用嵌入紙…

c中獲取python控制臺輸出_在真實的tim中用C捕獲控制臺python打印

我正在嘗試從C創建一個python進程,并從python腳本獲取打印結果。在這就是我的C代碼:namespace ConsoleApp1{public class CreateProcess{public String PythonPath { get; set; }public String FilePath { get; set; }public String Arguments { get; se…

python三大編程語言_程序員最需要的三種編程語言

隨著科學技術的進步和新技術的進步,編程語言的種類越來越多,變化是程序員需要跟蹤和學習許多語言 然而,有太多的語言無法一一掌握 在目前的形式中,最需要掌握的三種編程語言是 現在判斷還不晚 坦白說,找工作很容易 它可…