Tag: #wcf

如何在不使用ping的情况下检查Web服务是否已启动并运行?

如何检查Web服务中的方法是否正常工作? 我不能用ping。 我仍然想检查客户端从Web服务调用的任何方法。 我知道很难概括,但应该有一些方法。

在单个操作上启用多个HTTP方法?

我有一个操作合同(下面),我想允许GET和POST请求。 如何告诉WCF接受单个OperationContract的两种类型的请求? [OperationContract, WebInvoke(Method=”POST”, BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = “query”)] XElement Query(string qry); [OperationContract, WebInvoke(Method=”GET”, BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = “query?query={qry}”)] XElement Query(string qry);

WCF Web服务错误:“服务端点绑定不使用HTTP协议”?

我有一个简单的WCF服务,在我的开发机器上进行测试时工作正常。 现在我已将Web服务移动到Web服务器,并且我正在http://mydomain.com:8005上运行该服务(在调试模式下)。 打开Web浏览器到该URL显示预期的服务页面,如果我在我正在调用的接口内的服务器上放置一个断点,它会命中断点并返回预期的数据……但是在客户端它返回出现以下错误: 接收到http://mydomain.com:8005/的HTTP响应时发生错误。 这可能是由于服务端点绑定不使用HTTP协议。 这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。 请参阅服务器日志以获取更多详 更多线索:界面签名是: IEnumerable GetThings(out string errMsg); 其中MyClass定义为Serializable,客户端和服务器之间的定义相同。 有什么想法我需要翻转什么秘密开关?

启用WCF服务以与JSON一起使用

我创建了一个wcf服务。 当我通过添加作为web服务在.net中使用时,这工作正常。 但我想让它能够用作iPhone应用程序作为JSON调用。 为了测试,我已经在.net中使用它与JSON但它无法正常工作。 我知道之前有这样的问题,我已经找到了这个找不到我的解决方案。 我的配置: 接口代码: [ServiceContract] public interface IGolfPyramidService { [WebInvoke(UriTemplate = “/Test”, Method = “POST”, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] [OperationContract] string Test(); } Myservice.cs代码: [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class MyService : IMyService { public string Test() { return “success”; } } 我想使用url格式调用该方法,如: http : //example.com/MyService.svc/test

无法处理消息,因为内容类型为’application / json; charset = utf-8’不是预期的类型’text / xml; 字符集= UTF-8′

通过ajax json调用WCF服务时,我得到了上述响应。 我的主叫代码是: $(document).ready(function () { $.ajax ({ type: “POST”, contentType: “application/json; charset=utf-8”, url: “http://localhost:90/WebServices/UserService.svc/Calculate”, data: “{}”, timeout: 10000, dataType: “json”, success: function (response) { alert(response) }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.statusText); alert(thrownError); } }); }); 我的服务是: [ServiceContract] public interface IUserService { [OperationContract] [WebInvoke(Method = “POST”, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json )] […]

HTTP标头或SOAP标头中的WCF Soap操作?

我对如何在WCF(以及其他Web服务框架)中实现SOAPAction感到困惑。 在测试客户端中,我有一个客户端消息检查器,配置为同时获取SOAP消息和随请求一起发送的任何HTTP头。 至少在客户端消息检查器中,该操作显示为SOAP标头中的元素: http://myurl.com/2009/11/MyService/MyMethod 但是,如果我在Fiddler中查看请求,则缺少Action元素,而现在HTTP Headers中还有一个附加条目: SOAPAction: “http://myurl.com/2009/11/MyService/MyMethod” 谁能解释一下到底发生了什么? 谢谢!

WCF – 无法解析符号 – 我做错了什么?

我正在开发一个REST WCF项目,当我实现以下代码时,它抱怨它无法解析WebGet类? 我错过了什么? 我尝试导入System.ServiceModel.Web命名空间,但即使我引用它也无法找到它。 System.ServiceModel.Web中的“Web”在我在代码顶部的using语句中注册时不会注册。 基本上,我需要什么来实现这样的WCF REST概念,如WebGet,WebInvoke,UriTemplate等? 更新:经过一些反馈并稍微考虑一下我做了什么,似乎当我去的时候,DLL(System.ServiceModel和System.ServiceModel.Web)没有通过’Add Reference’窗口出现添加项目参考。 当我第一次启动项目时,仅供参考,因为这些程序集最初没有出现,我去“搜索”它们,并将它们复制到临时文件夹,以便我可以引用它们,因此,我想我有解决问题。 那么,既然我现在已经到了这一步,我怎样才能让我的VS识别/注册这些WCF REST DLL? 谢谢! 更新:我相信我对所有内容都进行了更新:在VS 2008 SP1上开发 – 我尝试下载最新的SP,下载REST预览2入门套件,针对3.5 Framework进行开发,尝试最终创建WCF REST层由Silverlight 2客户端使用。 这就是我所拥有的: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using UtilityClasses; using Microsoft.ServiceModel.Web; using Microsoft.Http; namespace WcfRestService { [ServiceContract] public interface IRestService { [OperationContract(Name = “Add”)] [WebGet(UriTemplate = “/”)] […]

删除匿名事件处理程序

我有以下代码,其中SprintServiceClient是对WCF服务的引用 – public class OnlineService { private SprintServiceClient _client; public OnlineService() { _client = new SprintServiceClient(); } public void AddMemberToTeam(MemberModel user, int projectId, Action callback) { _client.AddMemberToTeamCompleted += (s, e) => callback(e.Result); _client.AddMemberToTeamAsync(user.ToUser(), projectId); } } 问题是,每次调用AddMemberToTeam时,它都会向client.AddMemberToTeamCompleted添加另一个回调。 即第一次调用AddMemberToTeam时,调用一次回调,第二次调用AddMemberToTeam,调用两次ect回调。 有没有办法在调用eventhandler后从AddMemberToTeamCompleted中删除eventhandler或使用另一个接受回调的方法?

尝试上传大文件时获取exception

我正在使用wshttpbinding来提供服务 当我尝试上传15Mb的文件时,它会抛出下面的EndPointNotFoundException: 例外消息: There was no endpoint listening at “MY SERVICE URL” that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. 例外: The remote server returned an error: (404) Not Found.

向DataContract添加名称和命名空间有什么作用?

我尝试调用一个名为Register的WebInvoke方法,该方法返回一个User对象并立即返回该对象。 它看起来如下: User Register(User user) { return user; } 我不确定在调用http:// localhost:8081 / user / register时,Name和Namespace属性对DataContract属性的作用是什么? 我问的原因是因为我最初使用DataContract属性装饰了我的类,如下所示: [DataContract] public class User { // Properties } 当我打开Fiddler并发送一个Post请求时,它说方法不允许,但当我将DataContract更改为: [DataContract(Name=”User”, Namespace=””)] 有效。