C#编程,发布Web Service的一种方法,并通过WPF工程调用。

条件:

1、开启IIS服务

2、VS创建Web解决方案、并发布。

3、IIS创建网站服务,并配置。

4、VS创建WPF解决方案,并添加服务引用,用于调用服务中的方法。

5、其它方法调用服务

https://blog.csdn.net/han_better/article/details/81368433 

https://www.cnblogs.com/Brambling/p/6815565.html

1、开启IIS服务

我们主要用IIS服务来部署我们在windows系统上的互联网服务,比如部署.net工程,ftp服务器等等。

在win7和win10上开启IIS服务的方式基本一致,这里我们使用win7来演示IIS服务的安装。

1、安装IIS服务

a、点击开始->控制面板

b、将控制面板的查看方式 设置为小图标,这样可以展示更多的内容,否则可能看不到。点击默认程序。

c、选择程序和功能

d、选择打开或关闭windows功能

e、Internet信息服务->web管理工具,万维网服务全部勾选,Web管理工具全选,FTP服务也可以全选。

f、等待安装

g、点击控制面板->管理工具

h、双击Internet信息服务(IIS)管理器,就可以打开IIS服务的配置界面了。

 i,验证IIS是否正确安装,等待几分钟后IIS配置完成在浏览器输入http://localhost/iisstart.htm若出现下面的图标说明IIS安装成功

   

j.若果IIS安装不成功,会出现如下错误界面,解决该错误的方法参照

http://blog.csdn.net/mazhaojuan/article/details/10041553

 若出现错误,参照:http://m.blog.csdn.net/blog/u011534341/44925473 

2、VS创建Web解决方案、并发布。

1、创建项目,注意.NET版本。

2、在项目中添加一个WebService项

3、内容如下

4、创建我们自己的方法

5、生成成功后,点击发布

6、自定义,创建名称

 7、选择文件服务,选择发布的路径,

8、点击发布

9、打开IIS,新建网站,新建程序池。

写好网站名后,程序池默认与其同名,需要将程序池的.NET版本版本改成与服务一致,在高级设置中,启用32位应用程序;

身份验证,也要写,电脑的用户名与密码,这样其它电脑才能访问。

10、调用网站设置。启用目录。

iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容

提示里面的解决方法是:

  • 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在。
  • 使用 IIS 管理器启用目录浏览。
    1. 打开 IIS 管理器。
    2. 在“功能”视图中,双击“目录浏览”。
    3. 在“目录浏览”页上,在“操作”窗格中单击“启用”。
  • 确认站点或应用程序配置文件中的 configuration/system.webServer/directoryBrowse@enabled 特性被设置为 True。

按照该方法改后 ,发现网页运行界面进去的变成了目录结构,后来发现改配置文件web.config配置文件的配置节后,网站就可以正常使用了,记录下哦。

<system.webServer> 
<modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer>

要设置<modules>节的值为true, 而目录浏览启用或禁用其实都没影响的。

如果上边的方法还么有效果,以管理员身份打开cmd,运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i,

重新注册.NET Framework

主要原因可能是 .net framework版本不一致,iis7只有4.0

至此服务发布成功。

下面是通过POST与GET方法调用服务

https://www.cnblogs.com/weicanpeng/p/5755987.html

POST

服务方法:

调用方法:

        public static string PostWebService(String URL, String MethodName, string  ht)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL + "/" + MethodName);
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            // 凭证
            request.Credentials = CredentialCache.DefaultCredentials;
            //超时时间
            request.Timeout = 10000;
            var PostStr = ht;
            byte[] data = System.Text.Encoding.UTF8.GetBytes(PostStr);
            request.ContentLength = data.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(data, 0, data.Length);
            writer.Close();
            var response = request.GetResponse();
            var stream = response.GetResponseStream();
            StreamReader sr = new StreamReader(stream, Encoding.UTF8);
            String retXml = sr.ReadToEnd();
            sr.Close();
            return retXml;
        }

GET

        public string WEBPOST(string url)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
                request.Timeout = 10000;
                request.Credentials = CredentialCache.DefaultCredentials;
                request.ContentType = "application/xml;charset=UTF-8";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return retString;
            }
            catch (Exception ex)
            {
                return "";
            }
        }

猜你喜欢

转载自blog.csdn.net/qq_43307934/article/details/85015737