Tag: #wcf

在iis托管的wcf服务中传递文化价值

这是我的代码.. private IHelloWorld ChannelFactoryWebService() { ServiceEndpoint tcpEndPoint = new ServiceEndpoint( ContractDescription.GetContract(typeof(IHelloWorld)), new NetTcpBinding(), new EndpointAddress(“net.tcp://myserver/CultureTest/Service.svc”)); ChannelFactory factory = new ChannelFactory(tcpEndPoint); factory.Endpoint.Behaviors.Add(new CultureBehaviour()); return factory.CreateChannel(); } [TestMethod] <————– FAILING TEST —- public void ChangingCultureWASViaEndPointTest() { IHelloWorld client = ChannelFactoryWebService(); CultureInfo cultureInfo = new CultureInfo("ar-SA"); Thread.CurrentThread.CurrentCulture = cultureInfo; client.Hello(); string culture = client.HelloCulture(); Assert.AreEqual("ar-SA", culture); <— fails […]

如何将WCF服务绑定到IP地址

我正在使用VSTS2008 + C#+ .Net 3.5开发由IIS托管的WCF服务。 我发现当使用Add Service Reference …从客户端引用服务时,客户端必须能够将机器名称解析为IP地址,因为WSDL按机器名称引用某些模式文件。 下面是WSDL文件的一部分示例,为了从客户端解析WSDL文件以生成代理,我们必须能够将机器名testmachine1解析为相关的IP地址, 我的问题是,由于某种原因,机器名称无法一直解析(出于非技术原因),所以我想绑定到托管IIS服务器的IP地址。 可能吗? 如果是,请欣赏,如果有人可以建议。 这是我当前的WCF web.config文件,我想知道如何修改它以使其能够使用IP地址, 乔治,提前谢谢

Wcf – 在exception之前重试3次?

在生成请求exception之前,我被要求构建一个3次重试的机制。 我们有这种拓扑: Service1调用Service2 。 如果连续3次失败 – 产生一个激发。 WCF是否有任何重试机制?

unit testingWCF行为扩展

这真让我抓狂。 我有一个扩展,我们用它来改变请求的内容响应,如果有错误。 基本上,如果一切正常,它会像往常一样被序列化为JSON,但如果我们得到一个未处理的exception,我们会根据不同的对象进行序列化。 我们需要对此进行unit testing,但我无法弄清楚如何编写它们。 validation它是否有效的方法围绕StatusCode,错误消息实例和响应的ContentType。 要修改回复的响应,我使用WebOperationContext静态类。 我已经看到了模拟这个的例子,但似乎我必须硬编码特殊的逻辑,然后开始渗透到我不想要的实际代码中。 有哪些unit testingWCF行为扩展的最佳方法是什么?

在WCF中使用会话

以下是我在WCF应用程序中使用Session要做的事情: System.Guid guid = System.Guid.NewGuid(); string id = guid.ToString(); HttpContext.Current.Session[id] = “AnyThing”; 但我收到此错误消息: 对象引用未设置为Object的实例。 这是在WCF应用程序中使用Session的正确方法吗? 或者是否有另一种方法在WCF中存储数据?

我可以将WCF DataContract添加到复杂类型吗?

我有一个复杂的数据类型,包括许多函数,以及通常的get和get方法。 如果我可以使用WCF,我的生活会变得相当容易,所以我的客户也可以使用这种数据类型。 我 忽略所有操作,仅在需要的地方放置[DataMemeber] 。 将有问题的类放在共享库程序集中,以供客户端和服务器访问。 谢谢,罗伯托 PS。 我意识到这个问题的措辞可能不尽如人意。

WCF UserName身份validation:我可以在自定义ServiceAuthorizationManager中获取用户名吗?

我有一个使用自定义ServiceAuthorizationManager的WCF服务。 自定义身份validation管理器已设置为处理Windows和Forms身份validation。 但是,如果我连接到设置为UserName auth的客户端,我似乎无法在任何地方找到用户名。 客户端代码如下所示: this.ClientCredentials.UserName.UserName = “user”; this.ClientCredentials.UserName.Password = “pass”; this.Open(); this.MyMethod(); // my actual contract method this.Close(); 然后在服务器上,我有我的自定义身份validation管理器: public sealed class AppAuthorizationManager : ServiceAuthorizationManager { public override bool CheckAccess(OperationContext operationContext, ref Message message) { // would like to check user/pwd here… } } 这可能吗? Thread.CurrentPrincipal未设置, 未设置operationContext.ServiceSecurityContext.PrimaryIdentity 。 operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets为空。 用户/密码应该在任何地方可用吗? 或者我是否还要添加自定义UsernamePasswordValidator ? 更新:所以我添加了一个自定义UserNamePasswordValidator和一个IAuthorizationPolicy 。 […]

WCF架构和Evolution,版本

这个问题围绕如何构建WCF服务以使其随着时间的推移变得容易。 在没有描述问题的情况下很难得到对此的响应深度。 背景 我正在开发一个大型的WCF服务和客户端系统。 服务器端“易于”更新,因为只有10个服务器运行此代码。 客户很难更新,尽管自动化程度很高,但在300,000多个WCF客户端,更新总是需要时间,并且只能在两到三周的时间内实现高更新成功率。 数据合同 [DataContract] public class MyContract { [DataMember] public int Identity {get; set;} [DataMember] public string Name {get; set;} // More members } DataContract很难初始化,并且有一个标准的MyContractFactory类来初始化为您的机器获取适当的实例。 public class static MyContractFactory { public static MyContract GetMyContract() { // Complex implementation } } ServiceContracts DataContract在一系列Web服务中非常常见。 namespace MyPrefix.WebServicve1 { [ServiceContract] public class IMyInterface1 { [OperationContract] […]

使用Soap Client进行Windows身份validation的Web服务

我需要从ac#forms app访问web服务。 Web服务需要Windows身份validation。 我使用以下代码: ServiceDeskSoapClient sd = new ServiceDeskSoapClient(); sd.ClientCredentials.UserName.UserName = @”mydomain\myusername”; sd.ClientCredentials.UserName.Password = “mypassword”; sd.MyMethod(); 但是得到以下错误: The HTTP request is unauthorized with client authentication scheme ‘Anonymous’. The authentication header received from the server was ‘Negotiate,NTLM’. 如何正确设置凭据,以便它使用Windows身份validation,而不是匿名?

WCF – 接收到http:// xxxxx / Service /的HTTP响应时发生错误

在你投票之前,我知道有一些重复的问题,比如这个问题,但是我试过并且没有成功找到它们的解决方案。 可能是我错过了一些东西,但我对WCF还是比较新的,所以有些东西让我头脑发热。 我在我的WCF服务中进行此调用: public User GetStudentRecord(string userName) { try { return new DashboardFacade().GetStudentRecord(userName); } catch (Exception ex) { ServiceFault fault = new ServiceFault(); fault.Operation = “GetStudentRecord”; fault.Reason = “Who knows…”; fault.Message = ex.Message; throw new FaultException(fault, fault.Message, new FaultCode(fault.Reason), fault.Operation); } } DashboardFacade()。GetStudentRecord(..)的定义如下: public User GetStudentRecord(string userName) { User user = ctx.Users.Where(x => x.ADUserName == […]