Tag: #wcf

C#:如何以编程方式检查Web服务是否已启动并正在运行?

我需要创建一个C#应用程序,它将监视一组Web服务是否已启动并正在运行。 用户将从下拉列表中选择服务名称。 该程序需要使用相应的服务URL进行测试,并显示该服务是否正在运行。 最好的方法是什么? 我想的一种方法是测试我们是否能够下载wsdl。 有没有更好的办法? 注意:此应用程序的目的是用户只需要知道服务名称。 他不需要记住/存储服务的相应URL。 我需要一个网站版本和这个C#应用程序的桌面应用程序版本。 注意:现有服务正在使用WCF。 但是将来可能会添加非WCF服务。 注意:我的程序不会知道(或不感兴趣)服务中的操作。 所以我无法调用服务操作。 参考 如何在不使用ping的情况下检查Web服务是否已启动并运行? C程序 – 如何检查Web服务是否正在运行

从WCF服务器端获取Windows用户名

我很喜欢Web服务和WCF,我正在使用Windows集成身份validation – 如何在服务器端接口上获取用户名? 我相信我应该实现一个自定义行为,或者可能是WCF会话的东西? 任何线索都会非常方便。

如何在WCF 4.5中使gzip压缩工作

WCF 4.5支持GZIP,无需第三方库或手写扩展。 我通过TCP Binding得到它,但找不到通过HTTP绑定使其工作的方法。 我的wcf – 服务是自我托管在Windows服务中。 插件:我不允许使用IIS; 我无法切换到任何WCF替换。 这适用于gzip: binding=”customBinding” bindingConfiguration=”tcpCompressionBinding” name=”tcp” 这就是我目前用于http的内容: binding=”basicHttpBinding” bindingConfiguration=”httpBinding” name=”http” 该文档并没有真正帮助我: http : //msdn.microsoft.com/en-us/library/dd456789.aspx 。 但是,据此,它应该工作: 从WCF 4.5开始,WCF二进制编码器增加了对压缩的支持。 使用CompressionFormat属性配置压缩类型。 客户端和服务都必须配置CompressionFormat属性。 压缩适用于HTTP,HTTPS和TCP协议。 如果客户端指定使用压缩但服务不支持它,则抛出协议exception,指示协议不匹配。 有关更多信息,请参阅选择消息编码器

ProtocolException未处理/(405)WCF不允许的方法; 绑定和端点看起来正确

我正在学习如何使用WCF,我正在尝试从头开始编写一个小的HelloWorld程序(主机和客户端)。 每当我的客户端尝试使用该服务时,我一直收到ProtocolException Unhandled ,我无法弄清楚原因。 我正在使用IIS托管服务。 关于我设置的方式:我正在尽力分离客户端,代理,主机,服务和合同,详见本video和本文所述 。 基本上我在解决方案中为每个项目提供了不同的项目。 这里有一些不同的文件显示我在说什么: 服务 namespace HelloWorld { public class HelloWorldService : IHelloWorldService { public String GetMessage(String name) { return “Hello World from ” + name + “!”; } } } 合同 namespace HelloWorld { [ServiceContract] public interface IHelloWorldService { [OperationContract] String GetMessage(String name); } } 代理 namespace HelloWorld { […]

将WCF 4中的默认JSON序列化程序替换为JSON.NET

我想用JSON.NET替换默认的WCF JSON(对于所有数据类型)序列化。 我在网上搜索过,找不到合适的解决方案。 这是我的目标: [JsonObject] public class TestObject { [JsonProperty(“JsonNetName”)] public string Name = “John”; [JsonProperty] public DateTime Date = DateTime.Now; } 这是我的WCFfunction: [OperationContract] [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] List Get(); 这是Global.asax中的代码: protected void Application_Start(object sender, EventArgs e) { // Create Json.Net formatter serializing DateTime using the ISO 8601 format var serializerSettings = new […]

WCF VS. 套接字

我想知道哪个WCF或.NET套接字效率更高,而且在游戏开发方案中推荐的更多。 以下是游戏的不同部分: – 在互联网上播放的客户端/服务器通信 – 在本地网络上同行。 我想知道你将在这些部件上使用哪种技术(两者都是wcf,两者都是套接字,另一端是wcf,另一端是套接字……)以及为什么,如果可能的话。 涉及的游戏不需要高通信频率(每秒3-4个就足够了)。

如何在RESTful WCF API中实现HMAC身份validation

我们正在使用WCF构建RESTful API(目前.Net 3.5,但很快将转向.Net 4)。 我们有一个function框架,但它目前没有安全保障。 它需要可以从.Net应用程序以及iOS,Android和Web应用程序访问。 我们想使用此处和此处描述的HMAC身份validation方案,但在描述如何validation哈希时,这两个示例似乎都分崩离析。 第一个示例无法描述UserKeys对象(哈希表?),第二个示例缺少客户端和服务器端的GetUserKey方法。 任何人都可以解释如何在这些示例中生成/存储/检索/使用“用户密钥”/令牌,或者提供如何在RESTful WCF服务中使用HMAC授权的更好示例(如果可能的话,还有源代码)? 编辑:经过更多的研究,我们确定我们需要更多的“ 授权 ”技术而不是“ 身份validation ”技术(语义?)。 我们实施了基本授权并保护了SSL背后的API。 基本授权使用与Web请求相同的“授权”标头作为HMAC 身份validation方案,但传递用Base64编码的用户名:密码字符串而不是令牌。 这允许我们针对我们的数据库自定义validation用户,以确定用户是否获得许可并具有访问所需API方法的适当安全权限。 我们当然愿意听取有关如何完成自定义用户名/密码validation的其他选项以及其他保护API的方法。

X509Certificate – 密钥集不存在

我有一个使用WCF的WinForms应用程序,并作为参数传递给函数证书: mySvcClient.SendDocument(cert.Export(X509ContentType.SerializedCert, “password”)); … 在WCF服务中 ,我从字节数组重新创建了证书: public void SendDocument (byte[] binaryCert) { X509Certificate2 cert = new X509Certificate2(binaryCert, “password”); … 但是当使用证书签署xml时,我收到错误“Keyset不存在”: if (cert.HasPrivateKey) // WORKS!!! { signedXml.SigningKey = cert.PrivateKey; // THROW “keyset does not exist” EXCEPTION … 在我的电脑中,该应用程序100%工作! 但是在WebServer中,我收到了这个错误! 问题是:即使X509Certificate2从一个字节数组重新创建,我需要一些特殊权限才能访问私钥? 谢谢!

需要示例fire并忘记对WCF服务的异步调用

在预定的时间间隔,我需要调用WCF服务异步调用另一个WCF服务。 调度我已经解决的WCF服务调用。 我认为我需要和我在这里读到有关stackoverflow的信息,有必要……,(实质上)准备或更改WCF服务的代码,以便能够处理对它们的异步调用。 如果是这样的话,那个简单的例子是什么样的?(也许是前后的例子)在.Net 3.5中还有必要吗? 第二,我正在使用来自WCF服务的代理来调用下一个WCF服务,并且需要一个对WCF服务的异步调用示例,如果它看起来与使用典型异步示例的BeginEnvoke和EndEnvoke的典型不同。 如果我完全不在我的问题上,我会相信它,并且会感谢任何纠正以建立更好的问题。

DataContract和inheritance?

如何使用DataContractinheritance? 代码如下工作? [DataContract] public class ConsoleData { [DataMember] public String Description { get; set; } } [DataContract] public class SomeData : ConsoleData { [DataMember] public int Volume { get; set; } ……