wcf服务器怎么发送信息,【WCF】如何将WCF部署到远程服务器

一、前言

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

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

2. 防火墙如何开放

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

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

二、准备阶段

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

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

maxBufferPoolSize=""

maxReceivedMessageSize=""

maxBufferSize=""

messageEncoding="Text">

name="BiChengUpdateService.UpdateService">

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

contract="IMetadataExchange" />

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

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

cf2668b83d53275dd547f318247ed7e7.png

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

三、IIS配置

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

9d5a940deecbab8f0392e67aea746b58.png

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

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

3c55b1f19e4735104cd6cf548881978c.png

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

1dc07f991f5847eb8997e24ca0b76edc.png

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

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

7397affbf64025928d8b4820364fab34.png

4. IIS的配置端口:

af5b5e65ca4e1d7d9c6422193e0d5bc8.png

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

四、防火墙设置

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

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

629d4c8abddf6fa60b2261a4234f721f.png

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

3e3e679522919e1ec83e48968ea7fe2f.png

五、总结

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,那你肯定第二步没做好!

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

fis-receiver:一行命令将项目部署到远程服务器

前言 本项目基于FIS2,没了.其实fis项目本身就提供了php版本的范例,这里翻译成node版本. 项目地址:https://github.com/chyingp/fis-receiver 服务端接 ...

【SqlServer】如何把本地SqlServer数据库部署到远程服务器上

这里笔者使用的使用SqlServer2012,本机和远程环境均为Win7. 1.选中需要部署的数据库,右击>任务>分离.选中删除连接. 2.现在在左侧的表中就看不见刚才那个数据了. 3.在 ...

通过VS2017发布.net core程序并使用Web 部署到远程服务器最新教程

最近一个项目中,为App开发后台接口,技术选型为最新 .net core版本,使用.net core开发web api接口过程中,为了方便app团队成员直接在线调用接口,找了公网上的一台服务器做为ap ...

xshell+xftp将项目部署到远程服务器上

Xshell 简介: Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议. Xshell 通过互联网到远程主机的 ...

.Net Core 使用jenkins 部署到远程服务器docker

最近一直在研究docker和kubernetes,小型的项目其实也用不到k8s,本文就是描述如何用jenkins 进行构建asp.net core 3.1项目并且发布到远程服务器docker容器中.本 ...

web deploy 部署到远程服务器(win server 2008 r2) 遇到的问题。。。。

和他遇到的情况一样,最后也解决了 http://www.cnblogs.com/brucejia/archive/2012/07/30/2615416.html 安装的前提是先看下这里: http:/ ...

Maven项目配置tomcat插件实现项目自动部署到远程服务器

1.tomcat配置 在tomcat目录中的conf目录下找到tomcat-users.xml配置文件,然后搜索tomcat-users,进行tomcat用户的角色和权限配置,如下:

WIN8+VS2013编写发布WCF之二(部署)

上文简介了如何建立WCF工程并且调试,下面说一下如何部署. 本文将陆陆续续讲述三种部署方式,随着项目的进展将不断补全. 声明: 用管理员身份打开VS2013,发布前请将程序的.net版本改成与服务器相 ...

Jenkins部署码云SpringBoot项目到远程服务器

本文是上一篇文章的后续,上一篇只是利用Jenkins部署项目到本地,并启动,本文是将项目部署到远程服务器并执行. 1.环境准备 1.1 安装插件 上一篇文章已经介绍了需要安装的应用及插件,这一篇还需要 ...

随机推荐

Java NIO读书笔记

一.Java IO与NIO区别: (1)Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO ...

如何把rtf、doc文件转换为HTML文件

//retText是路径 1 public string ExtractHtml(string rtfText) { try { //Create word object Word.Applicati ...

IOS版UC我的视频地址

UC浏览器/Library/Application Support/offlineVideos

Python标准库:迭代器Itertools

Infinite Iterators: Iterator Arguments Results Example count() start, [step] start, start+step, star ...

利用nf_conntrack机制存储路由,省去每包路由查找

IP是无连接的,因此IP路由是每包一路由的,数据包通过查找路由表获取路由,这是现代操作协议协议栈IP路由的默认处理方式.可是假设协议栈具有流识别能力,是不是能够基于流来路由呢?答案无疑是肯定的. 设计 ...

hive,spark的远程调试设置

spark的远程调试 spark-env.sh文件里面,加上下面配置即可: if [ "$DEBUG_MODE" = "true" ]; then export ...

jsp 页面取值

concrrent类下ReentrantReadWriteLock类的原理以及使用

1.ReentrantreadWriteLock 类的介绍 Lock接口下的子类存在 ReentrantLock子类,该子类是一个线程同步处理类:ReentrantLock类的介绍详见XXX: Loc ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值