求助,Silverlight同时使用Http绑定和TCP绑定的WCF服务的问题 100

环境:客户端:Silverlight4,服务端(.netfx4.0,wcf)这个系统是提供给企业内部使用的,我希望系统能自动根据运行环境来选择通过http或者tcp来访问... 环境:客户端:Silverlight4,服务端(.netfx 4.0,wcf)

这个系统是提供给企业内部使用的,我希望系统能自动根据运行环境来选择通过http或者tcp来访问wcf服务.如果允许在浏览器中,使用basichttpbinding,如果在浏览器外运行,则使用tcpnetbinding,以获得更好的性能.

我在Silverlight中首先添加了http绑定的wcf服务,然后手工修改配置文件.在配置文件中添加了Tcpnet绑定的内容,希望两个服务可以共用一个Contact.终结点的配置如下:

<endpoint address="http://localhost/abcService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding" contract="Server.IAbcService" name="BasicHttpBinding_IAbcService" />
<endpoint address="net.tcp://localhost:4512/abcService" binding="customBinding" bindingConfiguration="NetTcpBinding_AbcService" contract="Server.IAbcService" name="NetTcpBinding_IAbcService" />

然后在代码中这样获取服务,这是个服务工厂,对于使用者是透明的:

public static AbcServiceClient GetAbcService()
{
if (Application.Current.IsRunningOutOfBrowser)
{
var addr = AppContext.TcpServerHost + ":4512/AbcService";
Log.Debug("Service Address is:" + addr);
var client = new AbceServiceClient("NetTcpBinding_IAbcService", addr);
return client;
}
else
{
var addr = AppContext.ServerHost + "/AbcService.svc";
return new AbcClient("BasicHttpBinding_IAbcService", addr);
}
}

结果发现,在浏览器中运行使用http绑定都是正常的,而在浏览器外使用tcp下,无法工作.

请教,自动选择服务绑定的思路是否可行,我该如何做.

附:如果在添加服务的时候,添加的是tcp绑定的服务,然后在配置文件中添加http绑定,结果是反过来,tcp可用,而http不可用.

如果同时添加两种服务,那么两个服务的名称空间不一致,无法实现服务工厂.
展开
 我来答
alanwill_dong
2011-01-03
知道答主
回答量:17
采纳率:0%
帮助的人:5.5万
展开全部
bindingConfiguration 这个地方的配置有问题,无法了服务端产生一一对应关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
RayNCC
2010-12-31 · TA获得超过615个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:602万
展开全部
服务端是否有对应的两种连接方式?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式