Tag: #wcf

创建没有自动生成代理的WCF客户端

看着 WCF ChannelFactory与生成代理 似乎创建WCF客户端的最佳做法是创建代理(非自动生成)。 我一直在网上看了一段时间,我没有找到任何完整的例子(代理类,web.config) 你能提供一个例子或资源链接吗?

RESTful WCF服务图像上传问题

1 namespace Uploader 2 { 3 using System; 4 using System.IO; 5 using System.ServiceModel; 6 using System.ServiceModel.Description; 7 using System.ServiceModel.Web; 8 using System.Drawing; 9 using System.Drawing.Imaging; 10 using System.Net; 11 using System.Xml; 12 13 [ServiceContract(Namespace = “http://Uploader”)] 14 public interface IUploaderService 15 { 16 [OperationContract, WebInvoke(Method = “POST”,UriTemplate = “File/{fileName}”)] 17 bool UploadFile(string fileName, Stream […]

检测WCF中的套接字断开连接

我们正在构建一个WCF服务器(.NET 4.0)。 它只会使用net.tcp传输。 当客户端关闭TCP连接时,服务器将获取未处理的CommunicationException,并终止。 Q1。 如何处理CommunicationException以便服务器不会终止并继续为其他客户端提供服务? Q2。 在处理程序中,如何获取已中止的会话的SessionId? 我需要这样做来清理一些特定于会话的数据。 提前致谢! PS连接是通过Internet进行的,因此无论客户端是否正常断开连接,都可以随时关闭套接字。

了解Silverlight Dispatcher

我有一个无效的跨线程访问问题,但有一点研究,我设法通过使用Dispatcher修复它。 现在在我的应用程序中,我有延迟加载的对象。 我使用WCF进行异步调用,像往常一样,我使用Dispatcher更新我的对象DataContext,但它不适用于这种情况。 不过我在这里找到了解决方案。 这是我不明白的。 在我的UserControl中,我有代码在我的对象上调用Toggle方法。 对此方法的调用在Dispatcher中是这样的。 Dispatcher.BeginInvoke( () => _CurrentPin.ToggleInfoPanel() ); 正如我之前提到的,这还不足以满足Silverlight。 我必须在我的对象中进行另一个 Dispatcher调用。 我的对象不是UIElement ,而是一个处理所有自己的加载/保存的简单类。 所以问题是通过调用来解决的 Deployment.Current.Dispatcher.BeginInvoke( () => dataContext.Detail = detail ); 在我class上。 为什么我必须两次调用Dispatcher来实现这一目标? 高级电话不应该足够吗? 在UIElement中Deployment.Current.Dispatcher和Dispatcher之间有区别吗?

如何检查net.tcp WCF服务的可用性

我的WCF服务器需要定期上下移动,客户端有时会使用服务器,但如果它关闭,客户端就会忽略它。 因此,每次我需要使用服务器服务时,我都会检查连接状态,如果它没有打开,我打开它。 问题是,如果我在服务器关闭时尝试打开,则会出现性能下降的延迟。 我的问题是,有没有办法做某种myClient.CanOpen() ? 所以我知道是否有任何意义打开与服务器的连接。

如何限制对WCF中某些方法的访问?

我开始使用简单的WCF服务有点失落。 我有两种方法,我希望向世界公开一个,第二个我想限制某些用户。 最终,我希望能够使用客户端应用程序来使用受限制的方法。 到目前为止,我可以匿名访问这两种方法: C#代码 namespace serviceSpace { [ServiceContract] interface ILocationService { [OperationContract] string GetLocation(string id); [OperationContract] string GetHiddenLocation(string id); } [AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class LocationService : ILocationService { [WebGet(UriTemplate = “Location/{id}”)] public string GetLocation(string id) { return “O hai, I’m available to everyone.”; } // only use this if authorized somehow [WebGet(UriTemplate […]

是否可以在不添加服务引用的情况下访问WCF服务?

我需要访问Wcf服务方法而不添加服务引用?如何做到这一点? 第1步:我创建一个WCF服务。 第2步:向我的应用程序添加服务引用。 第3步:访问应用程序中的WCF服务方法。 像这样, ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client(); protected void Button1_Click(object sender, EventArgs e) { UserDetails userInfo = new UserDetails(); userInfo.UserName = TextBoxUserName.Text; userInfo.Password = TextBoxPassword.Text; userInfo.Country = TextBoxCountry.Text; userInfo.Email = TextBoxEmail.Text; string result = obj.InsertUserDetails(userInfo); LabelMessage.Text = result; }

WCF服务引用名称空间与原始名称不同

关于我的服务引用所使用的命名空间,我遇到了问题。 我有许多WCF服务,比如命名空间MyCompany.Services.MyProduct ( 实际名称空间更长 )。 作为产品的一部分,我还提供了一个示例C#.NET网站。 此Web应用程序使用命名空间MyCompany.MyProduct 。 在初始开发期间,该服务被添加为网站的项目参考并直接使用。 我使用了一个工厂模式,它返回一个实现MyCompany.Services.MyProduct.IMyService的对象实例。 到现在为止还挺好。 现在我想更改它以使用实际的服务引用。 添加引用并在命名空间文本框中键入MyCompany.Services.MyProduct后,它将在命名空间MyCompany.MyProduct.MyCompany.Services.MyProduct中生成类。 坏! 我不想仅仅因为我正在使用代理类而在几个地方using指令进行更改。 所以我尝试使用global::前置命名空间,但是不接受。 请注意,我还没有删除原始程序集引用,并且启用了“重用类型”,但显然没有重用。 但是,我不想在我的示例网站中保留程序集引用,以使其无论如何都能正常工作 。 到目前为止,我提出的唯一解决方案是将我的Web应用程序的默认命名空间设置为MyCompany (因为它不能为空),并将服务引用添加为Services.MyProduct 。 假设客户想要使用我的示例网站作为起点,他们将默认命名空间更改为OtherCompany.Whatever ,这显然会破坏我的解决方法。 这个问题有一个很好的解决方案吗? 总结一下 :我想在原始命名空间中生成服务引用代理,而不引用程序集。 注意:我已经看到了这个问题 ,但没有提供可用于我的用例的解决方案。 编辑:正如John Saunders建议的那样,我已向微软提交了一些反馈: 反馈项目@ Microsoft Connect

.net核心中的WCF(TransportWithMessageCredential)

当我尝试在dotnet core 2.0中创建与WCF客户端的连接时,我收到一个不支持的平台错误: System.PlatformNotSupportedException: ‘The value ‘TransportWithMessageCredential’ is not supported in this context for the binding security property ‘securityMode’.’ 如果我删除BasicHttpSecurityMode ,我收到一个参数exception:System.ArgumentException:’提供的URI方案’https’无效; 预计’http’。’ 码: ChannelFactory factory = null; BlackBoxContract serviceProxy = null; Binding binding = null; binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential); factory = new ChannelFactory(binding, new EndpointAddress(“https:…….”));; serviceProxy = factory.CreateChannel(); 任何找到解决方法的人都可能在长期路线图中? https://github.com/dotnet/wcf/issues/8

在edge.js应用程序中加载WCF app.config绑定

我有一个用于soap服务的WCF客户端,通过SvcUtil生成,我想通过edge.js使用它 是否可以使用edge.js从app.config加载服务模型绑定,还是必须在c#中构造绑定? 如果我可以,app.config应该在哪里生活? 谢谢, 加雷斯。