Tag: #wcf

WCF中IsWrapped属性的用途是什么

WCF中“IsWrapped”属性的用途是什么。 我应该在哪种情况下使用这个属性?为什么?

将现有WCF项目更改为Azure项目

我有一个有效的WCF服务。 我想在Windows Azure上部署它。 托管现有的WCF服务在Azure上编写,我应该右键单击项目并选择一个选项。 但我的菜单中没有这样的选项。 对于哪些类型的项目,我可以使用上面提到的右键单击进行此类转换?

如何在WCF和C#中实现传统TCP / IP服务?

我有一个传统的TCP / IP服务,它在套接字上侦听专有格式的消息。 当服务收到消息时,它会对其进行处理并回复一个类似格式的消息(经典请求/回复情况)。 我们无法更改调用旧服务的客户端,并且我们希望使用WCF和C#将旧服务替换为IIS中托管的新服务。 如何在WCF中实现此function? 甚至可以让WCF理解专有的消息格式吗? 如果不是那么WCF的替代品呢? 我在这里有灵活性,但必须使用C#和.NET。

将multipart / form-data发布到WCF REST服务:操作更改

我有一个WCFrest服务: [WebHelp(Comment = “Sample description for GetData”)] [WebInvoke(Method=”POST”, UriTemplate = “invoke”, BodyStyle =WebMessageBodyStyle.Bare)] [OperationContract] public string GetData( Stream input) { long incomingLength = WebOperationContext.Current.IncomingRequest.ContentLength; string[] result = new string[incomingLength]; int cnter = 0; int arrayVal = -1; do { if (arrayVal != -1) result[cnter++] = Convert.ToChar(arrayVal).ToString(); arrayVal = input.ReadByte(); } while (arrayVal != -1); return […]

c#中生成的代理类中的列表与数组

我有一个WCF服务,当我用svcutil生成客户端代理类时,它将我的列表属性更改为数组。 有没有一个选项可以确保我在不修改C#生成的类的情况下维护列表? //The object in the service… [System.CodeDom.Compiler.GeneratedCodeAttribute(“svcutil”, “3.0.4506.2152”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(Namespace = “http://brax.com/data/Query”)] public partial class PayloadType { private List personBasedQueryField; private List locationBasedQueryField; //Generated class… [System.CodeDom.Compiler.GeneratedCodeAttribute(“svcutil”, “3.0.4506.2152”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(Namespace = “http://brax.com/data/Query”)] public partial class PayloadType { private PersonType[] personBasedQueryField; private LocationType[] locationBasedQueryField;

如何测试WCF服务的客户端

我有一个WCF服务,它公开了一个命中数据库的方法GetNextObjectInList(int id) 。 WCF服务或多或少地工作,如下所示: public class MyService : IDisposable { public MyService() { this.IntializeDBConnection(); } public int GetNextObjectInList(int id) { /* uses DB connection */ } /* Dispose releases DB connection */ } 这使得客户端代码相对简单: public void UseNextElementInList() { IMyService svc = new MyServiceClient(); int nextID = svc.GetNextObjectInList(this.ID); /* use object */ } 我已经编写了unit testing来测试WCF服务对象,但我想测试消费者代码的各种事情,如时序/性能/error handling,但我不知道如何构建我的测试,使服务没有’击中DB。 […]

IIS上的WCF服务。 如何摆脱URL路径中的“Service.svc”组件?

我在IIS上托管了WCF服务。 出于商业原因,我不能发布此实例的公共URL,但我相信你会得到我的意思: 问题是,为了到达我的端点,似乎我已将Service.svc作为路径段的一部分包含在内 ,即我必须使用这样的URL: http:////Service.svc/ 我怎么能避免这个? 我的意思是,我想通过以下方式访问我的服务: http://// 当我在开发过程中自我托管服务时,我完全能够做到这一点。 最后,但这不是那么超然,浏览到http:////Service.svc URL会显示标准服务信息页面: 有没有办法可以防止这种情况发生?

服务模型性能计数器实例名称

我试图直接连接到ServiceModel发出的性能计数器(用于服务,端点和操作)。 问题是,当我尝试与某个服务(或端点/操作)关联时,我需要指定计数器的实例名称。 根据MSDN ,实例名称的模式很简单,但是在某些情况下,当实例名称的一个组件(uri,合同名称等)太长时,它会缩短,并且在开头或者开头添加哈希代码字符串的结尾。文章没有说明它是如何散列的。 所以我的问题是有一种方法可以根据服务名称及其地址获取ServiceModel实例名称

将数据从WCF绑定到MVVM客户端始终为空

我正在制作我的第一个Windows 8客户端。 这也是我第一次使用异步方法加载属性所以如果这是一个noobie问题,请原谅我。 我有一个WCF服务,并从visual studio中的Split Page模板开始为客户端(但我将几乎取代所有东西)。 当我直接在“SplitPage”代码中将数据导入我的视图后,所有内容都正确加载并显示出来。 但是,当我尝试使用MVVM时,该属性在绑定时没有任何项目。 因为WCF它是一个异步调用来获取数据是问题的原因吗? 有没有确保他们的数据在返回属性之前回来了(属性本身似乎不能被标记为异步)? 这是我做的: 出于测试目的,我放了一个ListView(代码说明了listbox但是我在XAML中使用了listview)并添加了以下代码作为在OnNavigatedTo处理程序中调用的异步方法: private async void GetUsersList() { ServiceClient client = new ServiceClient(); List _users = (await client.GetUsersAsync()).ToList(); foreach(UserDTO user in _users) { UserListBox.Items.Add(new UserView(user)); } TestStack.Children.Add(new UsersView()); } 这工作正常,当页面加载时,UserListBox包含UserViews。 然后我尝试进入一个完整的MVVM模式并创建了一个UsersViewModel和UsersView(复数)以及一个存储库,该存储库在其构造函数中初始化一个属性User,其中包含从我的WCF服务中提取的UserDTO的ObservableCollection。 这就是上面消息的最后一行是将视图设置为页面上的堆栈面板。 视图和视图模型在资源文件中粘合在一起: 绑定与我习惯的有点不同,因为显然.Net 4.5不再具有DataTemplates上的x:Type属性。 存储库中加载数据的部分如下所示: private ObservableCollection _users = new ObservableCollection(); private ServiceClient _client = […]

从没有WCF服务库项目/程序集引用的客户端使用WCF服务

以下问题可能是重复的,但没有足够的信息来回答我的问题。 是否可以在不添加服务引用的情况下访问WCF服务? 我按照本指南使用Visual Studio中的WCF服务库项目设置了TCP服务。 https://msdn.microsoft.com/en-us/library/ff649818.aspx 如果您从客户端(Windows窗体项目)添加对WCF服务库项目的引用,这非常有用。 并将一个using语句添加到项目程序集并使用此代码。 TcpService.Service myService = new TcpService.Service(); myService.GetData(123); 但是,我不想在调用方法“GetData”的项目中添加对TcpService程序集的引用。 按照上面第一个问题的答案。 所以我尝试使用这段代码。 我添加了对System.ServiceModel(和using指令)的引用来解决大多数错误。 但现在它说“找不到类型或命名空间名称’ServiceContract’(你是否缺少using指令或程序集引用?)”。 我是否需要在我的服务中修改App.Config,或者将任何其他代码(关于’ServiceContract’)添加到调用此代码的项目中? BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress(“net.tcp://localhost:8523/Service”); ChannelFactory factory = new ChannelFactory(binding, address); ServiceContract channel = factory.CreateChannel(); channel.GetData(123); 注意:我将默认的Service1.cs和默认接口IService1.cs重命名为Service.cs和IService.cs。 没有“1”作为后缀,基于说明。 我还在我的代码中将WcfServiceLibrary1重命名为TcpService。 此外,在.NET 4.5中,我根本不需要这行代码才能使用它。 这个.Close()出错了。 myService.Close(); 我在Visual Studio中添加了一个服务引用,右键单击Project> Add> Service Reference。 但我在那里得到一个错误。 第二个对话框出错: 无法识别URI前缀。 […]