草庐IT

c# - 在 WCF/WIF 中如何合并来自两个不同客户端的自定义 sts token 的声明

我正在尝试创建类似这样的东西:客户端从自定义STS1进行身份验证并获取token,下一个客户端使用机器key进行授权并在自定义STS2上颁发token并获取另一个token。使用最后一个token,客户端请求RP服务上的方法。所有服务都托管在IIS上,并使用主动联合方案。两个STS的端点都带有ws2007Federation和ws2007Http绑定(bind),并且RP使用ws2007FederationBinding并将STS2作为发布者。如果我使用CreateChannelWithIssuedToken创建channel,我只能看到来自STS1的token,而无法从STS2获取t

c# - 创建 WCF ChannelFactory<T>

我正在尝试将现有的.NETRemoting应用程序转换为WCF。服务器和客户端共享公共(public)接口(interface),所有对象都是服务器激活的对象。在WCF世界中,这类似于创建每次调用服务并使用ChannelFactory创建代理。我正在为如何正确创建ChannelFactory而苦苦挣扎。对于ASP.NET客户端。出于性能原因,我想缓存ChannelFactory对象并在每次调用该服务时创建channel。在.NET远程处理时代,曾经有RemotingConfiguration.GetRegisteredWellknownClientTypes()方法来获取我可以缓存的客

c# - IIS WCF 服务托管与 Windows 服务

我们开发了一个WCF服务,我们正在寻求部署它。我们的客户将与basicHttpBinding一起使用,但我们的内部团队将与namedPipesBinding一起使用。我们想知道是将其托管在IIS7中还是使用Windows服务更好。我们运行了一些测试,发现当我们在IIS中添加绑定(bind)时,它不会更新我们服务的配置文件。这意味着我们需要在两个不同的地方维护配置。这不合逻辑,对吧?我们还在StackOverflow上了解到,当WCF服务托管在IIS中时,基地址将被忽略(参见WCFserviceconfigurationfilequestionregarding)

c# - 如何处理 WCF 异常(带代码的综合列表)

我正在尝试扩展thisansweronSO使WCF客户端重试暂时性网络故障并处理othersituationsthatrequirearetrysuchasauthenticationexpiration.问题:需要处理的WCF异常有哪些,正确的处理方式是什么?以下是我希望看到的一些示例技术,它们可以代替proxy.abort()或作为补充:重试前延迟X秒关闭并重新创建一个New()WCF客户端。处理掉旧的。不要重试并重新抛出此错误重试N次,然后抛出由于不可能有人知道所有异常或解决它们的方法,因此请分享您所知道的。我将在下面的代码示例中汇总答案和方法。//USAGESAMPLE//in

c# - 在 WCF/.NET 中返回数据表

我有一个WCF服务,我想从中返回一个DataTable。我知道这通常是一个备受争议的话题,至于返回DataTables是否是一种好的做法。让我们暂时搁置一下。当我从头开始创建DataTable时,如下所示,没有任何问题。该表已创建、填充并返回给客户端,一切正常:[DataContract]publicDataTableGetTbl(){DataTabletbl=newDataTable("testTbl");for(inti=0;i但是,一旦我出去并点击数据库创建表,如下所示,我就会收到CommunicationException“底层连接已关闭:连接意外关闭。”[DataContra

c# - WCF 中的 "endpoint"是什么?

我的印象是端点在配置文件中定义为可能的客户端列表,但这没有意义(在我假设它说什么计算机可以连接到服务的意义上)现在我正在收集它更像是一个定义,所以有人可以解释一下对我来说终点是什么吗?我理解定义契约(Contract)接口(interface)然后实现契约(Contract)的概念,但我在这之间的某个地方迷路了,实际上有一些可用的东西。这里的地址是什么?主机地址?绑定(bind)是要使用的通信方法/协议(protocol)是否正确?契约(Contract)本质上是“共享的对象”(是的,我知道这在技术上是不正确的,但在这里和我一起工作) 最佳答案

c# - 为什么 WCF 会像我预期的那样返回 myObject[] 而不是 List<T>?

我正在从我的WCF方法返回一个列表。在我的客户端代码中,它的返回类型显示为MyObject[]。我必须使用MyObject[]、IList或IEnumerable...WCFClientmyClient=newWCFClient();MyObject[]list=myClient.GetMyStuff();orIListlist=myClient.GetMyStuff();orIEnumerablelist=myClient.GetMyStuff();我所做的就是获取此集合并将其绑定(bind)到网格。分配我返回的集合的最佳对象是什么? 最佳答案

c# - 为什么 WCF 中不允许方法重载?

假设这是一个ServiceContract[ServiceContract]publicinterfaceMyService{[OperationContract]intSum(intx,inty);[OperationContract]intSum(doublex,doubley);}C#中允许方法重载,但WCF不允许重载operationcontracts托管程序将在托管时抛出InvalidOperationException 最佳答案 简而言之,您不能重载方法的原因与WSDL不支持C#中存在的相同重载概念这一事实有关。以下帖子

c# - 在 WCF 的代码中将 IncludeExceptionDetailInFaults 设置为 true

如何在不使用App.Config的情况下在代码中设置IncludeExceptionDetailInFaults? 最佳答案 是的,当然-在服务器端,在您打开服务主机之前。但是,这需要您自行托管WCF服务-在IIS托管方案中不起作用:ServiceHosthost=newServiceHost(typeof(MyWCFService));ServiceDebugBehaviordebug=host.Description.Behaviors.Find();//ifnotfound-addbehaviorwithsettingturn

c# - 如何以编程方式将客户端连接到 WCF 服务?

我正在尝试将应用程序(客户端)连接到公开的WCF服务,但不是通过应用程序配置文件,而是通过代码。我应该怎么做? 最佳答案 您必须使用ChannelFactory类。这是一个例子:varmyBinding=newBasicHttpBinding();varmyEndpoint=newEndpointAddress("http://localhost/myservice");using(varmyChannelFactory=newChannelFactory(myBinding,myEndpoint)){IMyServiceclien