夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Asp.net专题(WCF/WPF/WF)
如何将WCF服务部署到远程服务器
夜鹰教程网 来源:www.yyjcw.com 日期:2018-9-9 10:04:08
如何将WCF服务部署到远程服务器

如何将WCF服务部署到远程服务器

相关视频教程查看http://yyjcw.com/html/News/1945.html



一、前言


      最近需要将自己写的WCF服务部署到远程服务器上,也就是公网上。宿主是IIS,在配置成功之前遇到了很多问题,问题如下:


      1. WCF该怎么宿主在IIS上,为何会出现 400 Bad Request


      2. 防火墙如何开放


      3. 为何我能在客户端引用服务,但是运行时依然提示Soap操作错误,404 Not Found


     


      那么接下来,我就告诉大家我走过的坑,也避免了百度上各种司机瞎带路。(网上好多其实是本地部署,Localhost谁都会,VS直接Debug都行)


 


二、准备阶段


     首先你要配置好的你的web.config,web.config的配置正确与否直接影响你WCF部署的成功与否。这里我可以提供一个我的例子,供大家参考:


复制代码

 1 <?xml version="1.0"?>

 2 <configuration>

 3   <appSettings/>

 4   <connectionStrings/>

 5   <system.web>

 6     <compilation debug="true" targetFramework="4.0"/>

 7     <!--

 8         通过 <authentication> 节,可以配置

 9         ASP.NET 用于识别来访用户身份的

10         安全验证模式。 

11     -->

12     <authentication mode="Windows"/>

13     <!--

14         如果在执行请求的过程中出现未处理的错误,

15         则可以通过 <customErrors> 节 

16         配置相应的处理步骤。具体来说,

17         开发人员可以通过该节配置

18         将取代错误堆栈跟踪显示的 HTML 错误页。

19 

20         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

21          <error statusCode="403" redirect="NoAccess.htm" />

22          <error statusCode="404" redirect="FileNotFound.htm" />

23         </customErrors>

24     -->

25     <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>

26   </system.web>

27   <!-- 

28       在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 时 system.webServer 节

29       是必需的。而对于早期版本的 IIS,此节并不是必需的。

30   -->

31   <system.webServer>

32     <!--

33         若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。

34         在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。

35       -->

36     <directoryBrowse enabled="true"/>

37   </system.webServer>

38   <system.serviceModel>

39 

40     <bindings>

41       <basicHttpBinding>

42         <binding name="bindingConfig" closeTimeout="00:30:00" openTimeout="00:30:00"

43           receiveTimeout="00:30:00" sendTimeout="00:30:00" hostNameComparisonMode="StrongWildcard"

44           maxBufferPoolSize="2147483647"

45           maxReceivedMessageSize="2147483647"

46           maxBufferSize="2147483647"

47           messageEncoding="Text">

48           <security mode="None"/>

49         </binding>

50       </basicHttpBinding>

51     </bindings>

52     

53            

54     <services>

55       <service behaviorConfiguration="BiChengUpdateService.Service1Behavior"

56         name="BiChengUpdateService.UpdateService">

57         <endpoint address="" binding="basicHttpBinding"

58           bindingConfiguration="bindingConfig" name="Endpoint1" contract="BiChengUpdateService.IUpdateService" />

59         <endpoint address="mex" binding="mexHttpBinding" name="Endpoint2"

60           contract="IMetadataExchange" />

61       </service>

62     </services>

63     <behaviors>

64       <serviceBehaviors>

65         <behavior name="BiChengUpdateService.Service1Behavior">

66           <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->

67           <serviceMetadata httpGetEnabled="true"/>

68           <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->

69           <serviceDebug includeExceptionDetailInFaults="false"/>

70           <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000" />

71         </behavior>

72       </serviceBehaviors>

73     </behaviors>

74   <serviceHostingEnvironment  multipleSiteBindingsEnabled="true" /> 

75   </system.serviceModel>

76 </configuration>

复制代码

 


这里,一定要注意的是两个地方:


1. Endpoint address


2. MultipleSiteBindingEnabled


 


问:web.config里有两个Endpoint address, 一个是mex(这个我们不管),另一个是”空”(这个特别重要),为什么要设成空值呢?


     难道部署在远程服务器上不应该写的是服务器的IP地址吗?


答:错!这个WCF所部署的IP地址和其相应的端口我们交给IIS即可。


 


问:如果我在Endpoint address写了服务器的IP地址及端口,例如:114.112.133.23:2037/UpdateserIve.svc会如何?


答:那你就掉坑里了,如果这样写,客户端确实可以引用你的服务,但是在114.112.133.23:2037/UpdateserIve.svc?wsdl(用浏览器打开),


      看最后一行,你会发现你的Soap Address会是这个尿性:114.112.133.23:2037/UpdateserIve.svc/114.112.133.23:2037/UpdateserIve.svc


      这明显地址有复制了一遍嘛!!!然后客户端的会出现Soap 操作错误,具体的错误Message为404 Not Found。


 


      配置好上述config后,我们在远程服务器硬盘上新建一个文件夹,放置发布服务时需要的文件,一共三个:bin, .svc 以及web.config




      bin文件主要放置你在WCF服务中生成的dll,其实你编译完WCF服务项目后,直接把bin文件拷贝了就行。


 


三、IIS配置


      1. 打开远程服务器的IIS,找到“处理程序映射”,看看有没有这个:


      


          没的话,这个可以百度一下,我就不赘述了,这步没司机会坑你。     


 


         2. 添加一个应用程序池,专门给你部署的WCF服务使用:


 


          


           托管管道模式为集成!请注意,你的WCF项目编译时也要一致!        


          3. 新建网站,配置网站的物理地址:


          物理地址就是之前新建的文件夹,应用程序池就是我们之前刚建的应用程序池。这里没显示出.svc及web.config,网站右键切换到内容视图即可




 


         4. IIS的配置端口:


         


         IP地址不要写你的服务器公网地址,会出现400 Bad Request,直接选择全部未分配!


 


四、防火墙设置


      有百度大神说把防火墙关了,关你大爷,服务器这么重要关什么防火墙。假设你要用7293端口,你只要在防火墙开放这个端口即可。


       首先,你的防火墙一定要能允许WCF运行:




       其次,新建入站规则,点击端口,开放出你所需要的WCF端口即可!




 


五、总结


      WCF既要求你会写代码,又要你会配置,最后还得要求你会部署。总结下这几个步骤:


1. 写好代码,IServiceT以及ServiceT.svc


2. 配置好你的web.config,这个是核心,建议多看看博园里大神的分析与指导。


3. IIS的配置,应用程序池->处理程序映射->新建网站->物理路径->IP及端口


4. 防火墙配置,是否允许WCF->新建入站规则,开放指定的WCF端口


5. 远程服务器WCF配置完后,在你客户端电脑上去访问页面:XXX.XXX.XXX.XX:XX/YYY.svc ,


    如果正常:继续在该Url后添上“?wsdl”,即:


    XXX.XXX.XXX.XX:XX/YYY.svc?wsdl,查看网页最下方的Soap Address是否为XXX.XXX.XXX.XX:XX/YYY.svc


                   如果是机器名:win2008:XX/YYY.svc,那你肯定第二步没做好!


    如果不正常:第三步就有问题了


如何将WCF服务部署到远程服务器

相关视频教程查看http://yyjcw.com/html/News/1945.html


复制链接 网友评论 收藏本文 关闭此页
上一条: .net操作SqlServer数据库增删改查…  下一条: 对WebApi 实现服务端信息的监控
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
表单提交中get和post方式的区别有…
解决ASP中UTF-8与GB2312编码转换乱…
asp数组中REDIM的用法(动态数组)…
生成html的新方法ASP
ASP字符串函数大全
ASP生成Word文件的代码
ASP中Randomize随机函数的使用
十天学会ASP教程之第一天:安装调…
自定义的asp日期格式化函数
防范ASP网站漏洞的八大法则之一
十天学会ASP教程之第二天:表单传…
asp中关于从utf8页面到gb2312页面…
ASP教程:实现长文章分页功能
IIS6架设网站的问题总结
五分钟打开 allow_url_fopen 的最…
  最近更新
C# Json数据中的特殊字符导致页面…
博客园是有开发博客查询相关的接口…
C#里面的ref和out区别
C#调用API让声卡发出声音
.NET使用反射读取用户自定义的枚举…
.net操作SqlServer数据库增删改查…
如何将WCF服务部署到远程服务器
对WebApi 实现服务端信息的监控
用WCF生成Restful风格的接口返回 …
只有一个地址如何调用WCF服务
WCF简介
搭一个简单的wcf服务
WCF配置说明
WCF传输的数据量过大问题的解决方…
asp.net大文件分块上传文件秒传断…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3