任何人都可以向我解释客户端服务器vesus上的超时配置有什么区别?例如,如果客户端将sendTimeout设置为5分钟,而服务器上的配置设置为1分钟,会发生什么?客户端自启动通信以来是否优先?
谢谢你的帮助 !
我们的应用程序使用C#(.Net framework 3.5)中的Web服务.大多数时候从服务器获得正确的响应,但它间歇性地抛出错误:
The request was aborted: Could not create SSL/TLS secure channel.
Run Code Online (Sandbox Code Playgroud)
启用它显示的跟踪:
System.Net Error: 0 : [3688] Decrypt returned SEC_I_RENEGOTIATE.
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个问题吗?什么是解决这个问题的方法.请告诉我.
任何帮助将受到高度赞赏.
提前致谢!
-Jemo
我正在尝试访问wcf客户端.我知道人们现在正在获取信息,所以我知道它有效.我的问题是我似乎无法超越它.该服务是一种相互认证的服务.我在我的本地机器上的个人商店中有相应的证书.即使这样,我得到以下例外:
A call to SSPI failed, see inner exception
Run Code Online (Sandbox Code Playgroud)
深入搜索异常,我看到了:
Message : The target principal name is incorrect
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我是否需要冒充用户池运行的用户?我是否需要添加Identity\ServicePrincipleName或Identity\UserPrincipleName?有没有人遇到类似的问题?
现在我的安全节点定义如下:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
HTTP请求未经授权使用客户端身份验证方案"Negotiate".从服务器收到的身份验证标头是"NTLM".
我需要使用基于(最好是单个)wsdl文件的WCF服务.
环境是VS-2008(sp1),我将使用自定义的"添加服务引用"宏来生成错误处理代理.我希望能够通过提供我从服务提供商处获得的WSDL文件来做到这一点(我不想提供主机URL).
如何才能做到这一点?
我有一个WCF服务类,让我们把它叫做一个.A是数据协定,其中包含另一个自定义对象B的集合作为其DataMembers之一.为了避免客户端的Null引用问题,我在构造函数中实例化BList,如下所示:
[DataContract]
public class A
{
[DataMember]
public String name { get; set; }
[DataMember]
public List<B> BList {get; set; }
public A()
{
BList = new List<B>();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在客户端上,在客户端上创建A的对象后,此实例化不会发生并且BList显示为null .我猜测构造函数没有出现在客户端上.那么,我是否需要使构造函数成为一个明确的操作契约?如果是这样会使客户看到他们不应该看到的内部事物,对吧?如何确保在客户端上发生此实例化?
谢谢,对不起,如果这看起来像一个愚蠢的问题.
我遇到以下错误的问题:" 已超出传入邮件的最大邮件大小配额(65536).要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性. "
所以我做了一些研究,发现我需要增加缓冲区和消息大小,这是我的WCF服务配置文件:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="default" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"/>
</wsHttpBinding>
</bindings>
<services>
<service name="WCF.Service.Service">
<endpoint address="ws" name="ws" bindingConfiguration="default" binding="wsHttpBinding" contract="WCF.Service.Contracts.IService" />
<endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="True" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to …Run Code Online (Sandbox Code Playgroud) 我有一个WCF服务,并希望使用TCP绑定连接到它.这一切都很好,但你应该如何处理客户?我注意到,如果你为每个调用创建一个新的客户端,它不会重新使用该通道,并留下一堆TCP连接,直到它们超时.
创建客户端,在其上调用方法然后关闭它是否正常?
如果您想重新使用连接怎么办?有什么限制?你可以从不同的线程同时拨打电话吗?如果你不能,你是否必须自己建立连接池?当重新使用连接时,您是否必须在拨打电话之前检查连接状态并在出现故障时进行清理?
我有一个WCF客户端正在向非WCF服务发送消息,并且该服务在处理用于签署WS-Security Timestamp元素的HMAC-SHA1签名方法时遇到问题.理想情况下,我们想使用RSA-SHA1签名方法,但我无法让WCF使用该签名方法.
我正在使用的绑定是一个自定义绑定,它允许我通过HTTPS发送SAML 2.0令牌:
<customBinding>
<!-- This binding is a WS2007FederationHttpBinding without Secure Sessions that uses Text message encoding. -->
<binding
name="WS2007FederationHttpBinding_NoSecureSession_Text"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00">
<security
authenticationMode="IssuedTokenOverTransport"
requireSignatureConfirmation="true"
securityHeaderLayout="Lax"
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
keyEntropyMode="CombinedEntropy"
includeTimestamp="true">
<issuedTokenParameters
tokenType="urn:oasis:names:tc:SAML:2.0:assertion">
<!-- This describes the STS. That is, the URL, the binding to use, and its Identity -->
<issuer
address="http://hostname//STS.svc"
binding="ws2007HttpBinding"
bindingConfiguration="StsUserNameBindingConfiguration">
<identity>
<!-- This is the certificate used for signing on the STS. -->
<!-- Replace "sts-signing-certificate-thumbprint" with the actual thumbprint of the STS's signing …Run Code Online (Sandbox Code Playgroud) 我正在消耗一个笨重的WCF服务器,偶尔会抛出各种异常,并且还会返回一些错误string.我根本无法访问服务器代码.
我想覆盖内部WCF客户端请求调用方法并处理服务器返回的所有内部异常和硬编码错误,并在Fault发生错误时引发事件,伪:
class MyClient : MyServiceSoapClient
{
protected override OnInvoke()
{
object result;
try
{
result = base.OnInvoke();
if(result == "Error")
{
//raise fault event
}
catch
{
//raise fault event
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我打电话时myClient.GetHelloWorld(),它通过我的重写方法.
怎么能实现这一目标?
我知道我不必使用生成的客户端,但我不想再次重新实现所有的合同,我想使用生成的ClientBase子类或至少它的通道.
我需要的是控制内部请求调用方法.
更新
我读了这个答案,看起来它部分是我正在寻找的,但我想知道是否有办法只附加一个IErrorHandler消费者(客户端)代码,我想以ClientBase<TChannel>某种方式将它添加到实例.
更新
这篇文章看起来很有希望,但它不起作用.应用的属性似乎没有生效.我找不到添加IServiceBehavior到客户端的方法.
更新
我试图安装一个IErrorHandler通过IEndpointBehavior.ApplyClientBehavior调用:
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.CallbackDispatchRuntime.ChannelDispatcher.ErrorHandlers
.Add(new ErrorHandler());
}
Run Code Online (Sandbox Code Playgroud)
(clientRuntime是一个参数),但仍会直接跳过异常跳转MyErrorHandler …
wcf-client ×10
wcf ×9
c# ×5
.net ×1
ntlm ×1
sspi ×1
tcp ×1
timeout ×1
wcf-binding ×1
wcf-security ×1
web-services ×1
ws-security ×1