Tag: #wcf

使用查询字符串参数消除UriTemplate匹配的歧义

我正在使用WCF 4.0来创建REST-ful Web服务。 我想要做的是根据UriTemplate中的查询字符串参数调用不同的服务方法。 例如,我有一个API,允许用户使用其驾驶执照或社会安全号码作为密钥来检索有关某人的信息。 在我的ServiceContract /接口中,我将定义两个方法: [OperationContract] [WebGet(UriTemplate = “people?driversLicense={driversLicense}”)] string GetPersonByLicense(string driversLicense); [OperationContract] [WebGet(UriTemplate = “people?ssn={ssn}”)] string GetPersonBySSN(string ssn); 但是,当我使用这两种方法调用我的服务时,我得到以下exception: UriTemplateTable不支持具有与模板’people?ssn = {ssn}’等效路径的多个模板,但具有不同的查询字符串,其中查询字符串不能通过文字值消除歧义。 有关更多详细信息,请参阅UriTemplateTable的文档。 使用UriTemplates有没有办法做到这一点? 这似乎是一种常见的情况。 非常感谢!

初学者WCF问题 – 消耗性异步服务

这是一个“可以做到的”,而不是“怎么做”的问题。 我正在寻找构建一个服务(中间层,.net,提供数据抽象和一些业务逻辑),将由不同平台上的多个内部客户端系统使用。 例如,一个客户端可能是一个网站,另一个客户端可能是一些Java代码,另一个客户端可能是C# 我想在我的服务中提供同步和异步API,例如GetData,BeginGetData,EndGetData方法。 我还希望客户能够注册添加到系统中的新“数据”的通知。 在过去,我使用带有Tibco EMS通道的Web服务来实现此通知。 我的问题是:我可以通过公开WCF服务来实现三个要求(synch,asynch和pub / sub)吗? 非WCF客户端可以使用此服务吗? 请原谅这个问题的模糊性 – 我可以根据需要详细说明。 提前致谢。

在WCF服务上公开entity framework

我需要一些帮助! 我正在尝试使用Entity Framework,WCF,MVVM和WPF技术创建我的第一个应用程序。 我是所有人的新手。 所以我使用Entity Framework为我的数据库创建了一个模型。 然后我创建我的WCF服务类。 我已经阅读了近50篇关于EF和WCF服务的文章,我现在都在混淆。 我知道我不应该直接暴露我的模型。 目前我正在使用此代码作为服务合同: namespace Ohmio.DataService { [ServiceContract] public class OhmioService { [OperationContract] public IEnumerable ListarPedidos(string IDComprobante, bool bEntregados, int Numero = -1, int IDCliente = -1) { using (var context = new OhmioTestNet()) { string sqlString=”SELECT VALUE cs FROM OhmioTestNet.vw_Pedidos AS cs WHERE cs.ID_Comprobante=='” + IDComprobante + “‘ […]

AddressAccessDeniedException:在没有netsh的情况下解决它?

我遇到了exceptionAddressAccessDeniedException因为我的processus没有权限注册URL。 我首先以管理员身份运行我的程序:好吧,它有效。 但我现在想要分发我的应用程序,我希望每个用户都能够运行它而无需成为管理员。 有没有办法自动授予用户访问权限? 我看到了命令: netsh http add urlacl url=http://+:8000/ user=DOMAIN\UserName 我应该用吗? 如果有,怎么样? 我想做的就是在没有管理员的情况下授予访问权限…这样说,它似乎很愚蠢,但可能……

在WCF服务应用程序中找不到类型或命名空间名称“var”

当我尝试在WCF服务应用程序中使用“var”时,它给出错误“找不到类型或命名空间名称’var’(您是否缺少using指令或程序集引用?)”

unit测试一个调用wcf服务的方法

如何对调用WCF服务的业务层方法进行unit testing? 例: public void SendData(DataUnit dataUnit) { //this is WCF call SomeServiceClient svc = new SomeServiceClient(); svc.SomeMethod(dataUnit); } 有没有办法在unit testing项目中模拟SomeServiceClient?

通过HTTPS进行WCF并签署正文

我有一个我想要连接的SOAP服务。 它需要通过https访问,并且需要通过证书对其进行签名。 我试过以下代码: 按如下方式设置我的客户端: P4_ServiceReference.P4PortTypeClient client = new P4_ServiceReference.P4PortTypeClient(); client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; client.ClientCredentials.ServiceCertificate.DefaultCertificate = new X509Certificate2(@”[..].cer”); client.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(@”[..]”, “somepass”); 甚至更改了我的Reference.cs以在ServiceContractAttribute和OperationContractAttribute上包含ProtectionLevel=ProtectionLevel.Sign 。 会发生什么是创建了wse:security标头,但是正文没有被签名。 该服务返回Element http://schemas.xmlsoap.org/soap/envelope/Body must be signed 。 我错过了什么让身体得到正确的签名?

App.config外的WCF ChannelFactory配置?

我有一个使用插件系统的Windows服务。 我在插件基类中使用以下代码为每个DLL提供单独的配置(因此它将从plugin.dll.config读取): string dllPath = Assembly.GetCallingAssembly().Location; return ConfigurationManager.OpenExeConfiguration(dllPath); 这些插件需要调用WCF服务,因此我new ChannelFactory(“endPointName”)的问题是new ChannelFactory(“endPointName”)只在托管应用程序的App.config中查找端点配置。 有没有办法简单地告诉ChannelFactory查看另一个配置文件或以某种方式注入我的Configuration对象? 我能想到的唯一方法是从plugin.dll.config读入的值手动创建EndPoint和Binding对象,并将它们传递给ChannelFactory重载之一。 这看起来真的像重新创建轮子,并且它可能会因为大量使用行为和绑定配置而变得非常混乱。 也许通过传递配置部分可以轻松创建EndPoint和Binding对象?

WCF真的取代了.NET Remoting吗?

我可以理解WCF通常比Remoting更好,但两者看起来与我完全不同。 MS制作这张漂亮的照片,以显示WCF有多棒(或者其他技术人员每次仅检查一个盒子的差距): alt text http://sofzh.miximages.com/c%23/IC371617.jpg 但是,WCF以SOA为中心,我认为假设每个联网应用程序都希望公开服务是不正确的。 在我的情况下,我正在寻找在不同PC上的两个服务器应用程序实例之间复制对象的方法。 WCF似乎只是提供了一个现代版本的COM …获取一个对象并调用方法,它神奇地调用另一台PC上的版本。 但Remoting似乎做了一些完全不同的事情,我不清楚为什么它被弃用而不被类似的技术取代。 那么,MS甚至声称Remoting已经死了吗? 或者他们是否仍然支持它,承认它与 WCF 并列 ?

ASP.Net Web API与WCF,我应该在我的项目中选择哪一个

到目前为止,我已经阅读了很多关于WCF和ASP.Net Web API之间差异的文章。 不幸的是,我无法清楚地知道什么能满足我的目的。 我读过的大多数文章都强调了两个Web服务的设计观点。 但我很困惑什么对我的项目最有效,为什么? 这是我对该项目的简要描述。 我需要在两台服务器之间创建一个通信通道(两者都是用C#编写的)。 服务器将使用消息(某种类型的命令)进行通信。 消息有时只能是确认,有时消息可能包含进行某些计算的指令。 例如,一条消息可以绘制内容,或发送短信等。消息不一定涉及任何数据库事务。 但是这些消息有时可以将大文本文件作为有效载荷发送(最大约1-5 MB)。 我相信WCF肯定会这样做,但我可以用ASP.net web API做同样的事情。 因为到目前为止我已经看到了ASP.Net web api的所有示例:它们适用于操纵某种DB存储(GET,PUT,DELETE)的RESTful服务。 但在我的情况下,我将需要公开服务点 进行某种处理,例如返回计算值,发送和确认消息等。 不只是操纵数据库存储。 那么,最好和最简单的方法应该是什么? 需要提到的是,我没有找到使用ASP.Net Web API实现此目的的任何直接示例。