最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#創(chuàng)建WebService接口并連接的全過程

 更新時間:2022年12月19日 11:05:42   作者:李公子lm  
工作時遇到需要請求客戶的接口返回數(shù)據(jù),要求使用WebService,借此機會記錄一下,下面這篇文章主要給大家介紹了關于C#創(chuàng)建WebService接口并連接的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

創(chuàng)建WebService項目

首先安裝下.NET Framework4.6.2-4.7.1開發(fā)工具。

然后就是新建 ASP.NET Web應用程序 項目。

輸入項目名稱WebServiceDemo

選擇空,然后先去掉HTTPS配置。

項目創(chuàng)建好之后,開始添加asmx文件.

添加好之后在添加一個有參數(shù)的名為Hello的方法。代碼如下圖。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebServiceDemo
{
    /// <summary>
    /// WebService1 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務,請取消注釋以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public string Hello(string name)
        {
            return "Hello"+name;
        }
    }
}

然后就可以直接啟動了,也可以發(fā)布到IIS中啟動。這里先發(fā)布到IIS,一會在新建一個控制臺項目用于連接到該服務。

發(fā)布好之后在IIS中添加網(wǎng)站,并綁定端口號為81.然后就可以啟動了。

直接啟動的話可能會報下面的錯誤,這是因為沒有設置起始頁。

可以直接輸入地址訪問。

http://localhost:81/webservice1.asmx

也可以在IIS默認文檔中添加webservice1.asmx文件。下次在瀏覽就可以直接打開了。

出現(xiàn)下圖的頁面,就表示服務已經(jīng)部署成功了。

連接到WebService服務

新建一個控制臺應用。

然后打開webservice地址輸入。

http://localhost:81/webservice1.asmx?wsdl

會打開一個xml文件。

接著右鍵文件另存為,把文件保存下來。并修改文件后綴名為wsdl。

在VS中添加,添加服務引用。選擇WCF Web Service。

這里其實可以直接輸入WebService的地址點擊轉(zhuǎn)到即可。當考慮到要連接的服務在本地不一定是可以訪問的,所以我們可以點擊瀏覽通過上面生成的wsdl文件來生成對應的代碼。

添加進來后如下圖所示,命名空間可以按照實際名稱修改。

之后點擊下一步,然后點擊完成即可。

完成之后這里就多了兩個文件。

調(diào)用方式如下,直接實例化對應的類,然后就可以像調(diào)用普通方法一樣,調(diào)用遠程的服務接口了。

using ServiceReference1;
using System;
using System.Threading.Tasks;

namespace TestProject
{
    public class Program
    {
        static async Task Main(string[] args)
        {
           await Test();
        }
        public static async Task Test()
        {
            var reference = new WebService1SoapClient(WebService1SoapClient.EndpointConfiguration.WebService1Soap12);
            var helloWorldResult = await reference.HelloWorldAsync();
            Console.WriteLine(helloWorldResult.Body.HelloWorldResult);
            var str = "張三";
            var helloResult = await reference.HelloAsync(str);
            Console.WriteLine(helloResult.Body.HelloResult);
        }
    }
   
}

返回結(jié)果如下,就像調(diào)用本地方法一樣自然。

不過這里應該有地方需要按需修改一下,在Reference.cs文件中,遠程服務地址是寫死的。所以需要改成參數(shù)。

 private static System.ServiceModel.EndpointAddress GetEndpointAddress(EndpointConfiguration endpointConfiguration)
        {
            if ((endpointConfiguration == EndpointConfiguration.WebService1Soap))
            {
                return new System.ServiceModel.EndpointAddress("http://localhost:81/webservice1.asmx");
            }
            if ((endpointConfiguration == EndpointConfiguration.WebService1Soap12))
            {
                return new System.ServiceModel.EndpointAddress("http://localhost:81/webservice1.asmx");
            }
            throw new System.InvalidOperationException(string.Format("找不到名稱為“{0}”的終結(jié)點。", endpointConfiguration));
        }

改造方法也簡單。添加一個url的入?yún)ⅰ?/p>

private static System.ServiceModel.EndpointAddress GetEndpointAddress(string url,EndpointConfiguration endpointConfiguration)
    {
        if ((endpointConfiguration == EndpointConfiguration.WebService1Soap))
        {
            return new System.ServiceModel.EndpointAddress(url);
        }
        if ((endpointConfiguration == EndpointConfiguration.WebService1Soap12))
        {
            return new System.ServiceModel.EndpointAddress(url);
        }
        throw new System.InvalidOperationException(string.Format("找不到名稱為“{0}”的終結(jié)點。", endpointConfiguration));
    }

以及引用這個方法的這里都加上url。

    public WebService1SoapClient(string url, EndpointConfiguration endpointConfiguration) : 
            base(WebService1SoapClient.GetBindingForEndpoint(endpointConfiguration), WebService1SoapClient.GetEndpointAddress(url,endpointConfiguration))
    {
        this.Endpoint.Name = endpointConfiguration.ToString();
        ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
    }

調(diào)用的時候把Url傳進去即可。

var url = "http://localhost:81/webservice1.asmx";
var reference = new WebService1SoapClient(url, WebService1SoapClient.EndpointConfiguration.WebService1Soap12);
var helloWorldResult = await reference.HelloWorldAsync();
Console.WriteLine(helloWorldResult.Body.HelloWorldResult);
var str = "張三";
var helloResult = await reference.HelloAsync(str);
Console.WriteLine(helloResult.Body.HelloResult);

have a wonderful day。

總結(jié) 

到此這篇關于C#創(chuàng)建WebService接口并連接的文章就介紹到這了,更多相關C#創(chuàng)建WebService接口并連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#基于簡單工廠模式實現(xiàn)的計算器功能示例

    C#基于簡單工廠模式實現(xiàn)的計算器功能示例

    這篇文章主要介紹了C#基于簡單工廠模式實現(xiàn)的計算器功能,結(jié)合簡單實例形式分析了C#使用工廠模式的數(shù)值運算相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • C# winform操作CSV格式文件

    C# winform操作CSV格式文件

    這篇文章主要為大家詳細介紹了C#在winform中的表格操作CSV格式文件的相關實例,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2025-03-03
  • C# .Net8 switch的用法小結(jié)

    C# .Net8 switch的用法小結(jié)

    在 .net 8中,switch 不需要再和傳統(tǒng)的寫法一樣了,會更加的方便,本文主要介紹了C# .Net8 switch的用法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • C#12中的Collection expressions集合表達式語法糖詳解

    C#12中的Collection expressions集合表達式語法糖詳解

    C#12中引入了新的語法糖來創(chuàng)建常見的集合,并且可以使用..來解構(gòu)集合,將其內(nèi)聯(lián)到另一個集合中,下面就跟隨小編一起學習一下C#12中這些語法糖的使用吧
    2023-11-11
  • DataGridView不顯示最下面的新行、判斷新增行、刪除行操作

    DataGridView不顯示最下面的新行、判斷新增行、刪除行操作

    這篇文章介紹了DataGridView不顯示最下面的新行、判斷新增行、刪除行的操作方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C# winform循環(huán)播放多個視頻

    C# winform循環(huán)播放多個視頻

    這篇文章主要為大家詳細介紹了C# winform循環(huán)播放多個視頻的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C# SortedList排序列表的實現(xiàn)

    C# SortedList排序列表的實現(xiàn)

    本文主要介紹了C# SortedList排序列表的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 解答“60k”大佬的19道C#面試題(上)

    解答“60k”大佬的19道C#面試題(上)

    這篇文章主要解答了“60k”大佬的19道C#面試題中的10道,文中的面試題比較小眾,作者給了不錯的答案,相信對你以后的面試有所幫助,感興趣就來了解下
    2020-06-06
  • C#中XML基礎用法

    C#中XML基礎用法

    可擴展標記語言,標準通用標記語言的子集,簡稱XML。是一種用于標記電子文件使其具有結(jié)構(gòu)性的標記語言。這篇文章介紹了C#中XML基礎的用法,下面的實例代碼,大家可以看看
    2021-12-12
  • C#中Lambda表達式的用法

    C#中Lambda表達式的用法

    這篇文章介紹了C#中Lambda表達式的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論

唐河县| 商河县| 泗水县| 榆树市| 尉氏县| 南阳市| 大姚县| 万荣县| 嘉定区| 漳浦县| 信阳市| 罗源县| 南宁市| 比如县| 綦江县| 尤溪县| 阿尔山市| 都兰县| 四会市| 隆昌县| 饶平县| 夏河县| 岗巴县| 民丰县| 苏州市| 沂南县| 屏边| 延川县| 金山区| 荆州市| 玛曲县| 财经| 蓬安县| 陆川县| 浏阳市| 大石桥市| 文登市| 台山市| 桓仁| 四子王旗| 罗甸县|