我在过去使用WCF WebAPI做了一些工作,并且非常喜欢它的许多特性,现在我只是在使用ASP.NET Web API,看起来完全不同(IE完全从WCF中删除了)。 有谁知道WCF WebAPI的哪些function包含在ASP.NET 4 Web API中?
我想build立我自己的JSON,并有服务返回一个string,这里是代码 [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] public string GetCurrentCart() { //Code ommited string jsonClient = null; var j = new { Content = response.Content, Display=response.Display, SubTotal=response.SubTotal}; var s = new JavaScriptSerializer(); jsonClient = s.Serialize(j); return jsonClient; } 我得到的响应包含用于在C#中的string中创build的。 以下是答复。 "{\"Content\":\"\\r\\n\\u003cdiv\\u003e\\r\\n\\u003cinput type=\\\"hidden\\\" name=\\\"__VIEWSTATE\\\" id=\\\"__VIEWSTATE\\\" value=\\\"\/wEPDwUBMA9kFgJmD2QWAmYPZBYGAgMPFgIeBFRleHQFKFlvdSBoYXZlIG5vIGl0ZW1zIGluIHlvdXIgc2hvcHBpbmcgY2FydC5kAgUPFgIeB1Zpc2libGVoZAIHDxQrAAIPFgIfAWhkZGQYAQUMY3RsMDEkbHZDYXJ0D2dkoWijqBUJaUxmDgFrkGdWUM0mLpgQmTOe8R8hc8bZco4=\\\" \/\\u003e\\r\\n\\u003c\/div\\u003e\\r\\n\\r\\n\\u003cdiv class=\\\"block block-shoppingcart\\\"\\u003e\\r\\n \\u003cdiv class=\\\"title\\\"\\u003e\\r\\n \\u003cspan\\u003eShopping […]
我去https://mywebsite/MyApp/Myservice.svc并得到以下错误: (如果我使用http://,链接工作) “ 服务'/MyApp/MyService.svc'由于编译时出现exception而无法激活,例外情况是:找不到匹配scheme https的基地址,绑定BasicHttpBinding,注册的基地址模式为[http ] .. “ 编辑:所以如果我改变address="" address="https:// …"然后我得到这个错误,而不是: “ 错误:协议”https“不支持…..” https://…/Annotation.svc “上带有合约”Annotation“的ChannelDispatcher无法打开其IChannelListener。 以下是我的Web.Config外观: <services> <service behaviorConfiguration="AnnotationWCF.AnnotationBehavior" name="AnnotationWCF.Annotation"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation" contract="AnnotationWCF.Annotation" /> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecureTransport" contract="AnnotationWCF.Annotation" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> </binding> <binding name="SecureTransport" maxBufferSize="2147483647" […]
我正在查看WADLogsTable中的Azure日志,并希望过滤结果,但是我不知道如何去做。 有一个文本框,说: “input一个WCF数据服务filter来限制返回的实体” 什么是“WCF数据服务filter”的语法? 以下给我一个InvalidValueType错误说:“指定的值是无效的。”: Timestamp gt '2011-04-20T00:00' 我甚至closures? 是否有方便的语法参考?
如何dynamic地通过configuration文件切换WCF Web服务引用URLpath?
我有以下的WCF DataContract: [DataContract] public class Occupant { private string _Name; private string _Email; private string _Organization; private string _Badge; public Occupant(string name, string badge, string organization) { Name = name; Badge = badge; Organization = organization; } public Occupant(string name, string badge) { Value = name; Key = badge; } [DataMember] public string Key { […]
我有一个WCF服务,我想从中返回一个DataTable。 我知道这是一个非常激烈的话题,至于返回DataTable是否是一个好的做法。 我们暂且搁置一下。 当我从头开始创buildDataTable时,如下所示,不存在任何问题。 表被创build,填充并返回给客户端,一切都很好: [DataContract] public DataTable GetTbl() { DataTable tbl = new DataTable("testTbl"); for(int i=0;i<100;i++) { tbl.Columns.Add(i); tbl.Rows.Add(new string[]{"testValue"}); } return tbl; } 但是,一旦我出去打到数据库来创build表,如下所示,我得到一个CommunicationException“底层连接已closures:连接意外closures”。 [DataContract] public DataTable GetTbl() { DataTable tbl = new DataTable("testTbl"); //Populate table with SQL query return tbl; } 该表正在服务器端正确填充。 它比我循环并返回的testing表要小得多,查询又小又快 – 这里没有超时或大数据传输的问题。 正在使用相同的确切function和DataContracts / ServiceContracts / BehaviorContracts。 为什么填表的方式对表成功返回有什么影响?
到目前为止,在教程,博客和官方文档中,我已经看到: Microsoft.Web.WebSockets 从NuGet获得 程序集是Microsoft.WebSockets,但名称空间是Microsoft.Web.WebSockets 最后更新2011年9月14日 包含WebSocketHandler,WebSocketCollections,WebSocketExtensions System.Web.WebSockets .NET 4.5的一部分,可用于Visual Studio 11 Developer Preview 包含AspNetWebSocket,AspNetWebSocketContext,AspNetWebSocketOptions类 MSDN上的文档 System.Net.WebSockets 感谢Ladislav Mrnka指出这一点 .NET 4.5的一部分,可用于Visual Studio 11 Developer Preview 包含WebSocket,HttpListenerWebSocketContext等等 MSDN上的文档 System.ServiceModel.WebSockets 我一定以为我在某个地方见过这个,现在找不到 Microsoft.ServiceModel.WebSockets 从html5labs.interoperabilitybridges.com / …获得。 安装到[Program Files] \ Microsoft SDKs \ WCF WebSockets \ 11.06.22 \ bin 包含WebSocketHost,WebSocketService,WebSocketsService类以及接口和集合 最后更新2011年6月22日 这些有点不同吗? 是一些旧版本? 我一直认为“Microsoft.Web”命名空间用于预发布代码,但即使Build会议上的演示也使用这个命名空间,尽pipe.NET 4.5包含了内置的System.Web.WebSockets命名空间。 System.Web.WebSockets似乎与Microsoft.Web.WebSockets具有相同的API,但具有以AspNet为前缀的类和方法。 System.ServiceModel.WebSockets是WCF命名空间的一部分,这似乎是一个明智的地方把这东西。 帮助 – 我很困惑。 […]
DataContractJsonSerializer无法正确序列化字典。 而JavaScriptSerializer将字典序列化为{"abc":"xyz","def":42} ,DataContractJsonSerializer给出了[{"Key":"abc","Value":"xyz"},{"Key":"def","Value":42}]代替。 这是真的有问题,我想知道如何正确序列化Dictionary对象在我的WCF服务。 我正在寻找一个解决scheme,将需要最less的努力。 ref: http : //msdn.microsoft.com/en-us/library/bb412170.aspx 这是我最终用于在WCF中正确地使用字典的方法: http ://social.msdn.microsoft.com/forums/en-US/wcf/thread/765f1569-0422-4471-8ec2-1d03b2026771
看起来,使用WCF的本地DataContractJsonSerializer或ASP.NET的本地JavaScript序列化程序将entity framework对象序列化为JSON是不可能的。 这是由于序列化器拒绝的引用计数问题。 我也试过Json.NET ,它也没有具体的引用计数问题。 编辑: Json.NET现在可以序列化和反序列化entity framework实体 。 我的对象是entity framework对象,重载执行额外的业务function(如身份validation等),我不想装饰这些类与特定于平台的属性等,因为我想呈现一个平台无关的API 。 我实际上在http://bloggingabout.net/blogs/program.x/archive/2009/03/18/wcf-json-serialization-woes.aspx上写了个博客。 我错过了什么明显的东西?