WCF和REST和SOAP之间有什么关系? WCF是基于这些技术之一(REST还是SOAP),还是一种独立的技术?
当我在我的解决scheme中新build一个WCF服务时,我可以执行以下操作,有一个参数传入的构造函数? 如果是,运行时如何以及在何处填充我所需的IBusinessLogic对象? [ServiceContract] public interface IServiceContract { [OperationContract] … } public class MyService : IServiceContract { IBusinessLogic _businessLogic; public ServiceLayer(IBusinessLogic businessLogic) { _businessLogic = businessLogic; } … }
我有一些RESTful服务运行在纯WCF上下文(即ASP.NET兼容性未启用,因此没有HttpContext.Current对象可用)。 服务的URL在请求开始时使用一个IHttpModule (在那个时候有一个HttpContext并且使用HttpContext.Current.RewritePath重写它)来重写,以去掉URL中的.svc扩展名。 但是,我需要访问WCF基础结构内请求的原始URL。 在OperationContext或WebOperationContext类的任何地方有没有相当于HttpContext.Current.Request.RawUrl ? 使用WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri返回重写的URL不是原来的。
我注意到2147483647似乎是maxReceivedMessageSize的stream行select,但这是限制吗?
我有2个解决scheme: – 服务器解决scheme – 服务器注册到我的本地主机IIS: http:// localhost / MyApp / 客户端从本地主机应用程序添加WCF服务(服务引用): http://localhost/MyApp/MyService.svc 当我运行客户端时,我希望能够看到来回传递的消息。 我下载了Fiddler,但它似乎并不想让我看到任何stream量被发送,除非我真的使用networking浏览器。 我使用Fiddler错误还是有另一个工具,我应该用这个? 为了澄清,我期望做的是看到实际的消息被传入。我不想对他们做任何事情,除了亲眼看到他们。 我喜欢WCF服务日志实用程序,但我不认为我有那里正确的设置。 我看不到实际的肥皂信息,只是收到一条信息。 而且还要进一步澄清,只要我能够轻松地看到消息,我不在乎使用什么工具。
我有一个WCF服务和一个Web应用程序。 Web应用程序以连续方式(即轮询)调用此WCF服务。 在我们的生产环境中,我很less收到这个错误。 因为,这是一个内部活动,用户不知道何时抛出这个错误。 无法连接到http://localhost/QAService/Service.svc 。 TCP错误代码10048:每个套接字地址(协议/networking地址/端口)通常只允许使用一个127.0.0.1:80。 —> System.Net.WebException:无法连接到远程服务器—> System.Net.Sockets.SocketException:通常只允许使用每个套接字地址(协议/networking地址/端口)127.0.0.1 :80 我在dev / qa环境中重现这种行为时遇到了麻烦。 我已经确保客户端连接在try..catch..finally块中closures。 仍然不明白是什么导致这个问题..任何人意识到这一点? 注 :我已经看过这个问题 ,但似乎没有回答我的问题,所以它不是重复的问题。
我一直试图遵循一些WCF数据服务的例子,并有以下代码: private void OnSaveCompleted(IAsyncResult result) { Dispatcher.BeginInvoke(() => { context.EndSaveChanges(result); }); } 这被称为以下: this.context.BeginSaveChanges(SaveChangesOptions.Batch, this.OnSaveCompleted, null); 现在我在这里有点困惑。 首先,第一位代码显示“参数typeslambdaexpression式不能分配给参数typesSystem.Delegate”的语法错误。 所以不是盲目地试图遵循示例代码,而是尝试了解这里发生了什么。 不幸的是,我正在努力理解错误加上实际发生的事情。 我确信这很容易,我觉得有点愚蠢。 提前感谢任何启示!
我使用VS 2010开发了一个简单的WCF服务。我通过添加应用程序在IIS的默认网站中托pipe并设置物理path 而我试图浏览.svc文件,它给了我以下错误: “ configuration节'protocolMapping'不能被读取,因为它缺less一个节声明 ” 我尝试了很多解决scheme,但是它不起作用 我创buildWCF服务库有一个App.config与此: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings> <system.web> <compilation debug="true" /> </system.web> <!– When deploying the service library project, the content of the config file must be added to the host's app.config file. System.Configuration does not support config files for libraries. –> <system.serviceModel> […]
好吧,我一定在这里错过了一些非常简单的事情,因为我一直在Google上search几天,然后在那里看到几十个答案,而且在这里,无论我尝试了什么,我都无法得到这个工作。 当通过简单的HTTP调用时,该服务工作得很好。 这是我们的设置…我们有一个域名http://www.mydomain.com 。 我们在thawte上安装了SSL证书,就像我们保护电子商务网站一样。 这一切工作正常,我可以去http://www.mydomain.com,它的工作原理是正确的。 我在Windows Server 2003 R2上运行VS2008,.NET 3.5站点。 现在,我添加了一个支持Silverlight的WCF服务到我的站点,我想通过SSL进行通信。 如果我浏览到http://www.mydomain.com/myservice.svc,它会按照预期向我显示WSDL描述性的“ 您已经创build了一个服务 ”页面,该页面显示了如何创build您的客户端 svcutil.exe https:// … 编辑:我意识到在wsdl文件中显示的svcutil的url实际上是指向web服务器的物理框名称,而不是正确的域。 所以我经历了这篇博文中显示的步骤,以使用adsutil脚本来更新IIS中网站的SecureBinding。 现在wsdl文件显示正确的SSL地址,但我仍然得到相同的错误。 现在我去了,试图挂钩我的Silverlight应用程序,它不起作用,从asynchronous调用的结果中返回一个exception,指出“ 远程服务器返回一个错误:NotFound 。我的一些博客通过创build一个testing的Windows应用程序,并试图从中引用它,然后讨论了如何将它缩小到Silverlight问题。那么,我甚至在一个正常的Windows应用程序试图通过SSL访问服务,我得到一个exception,指出: System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at https://www.mydomain.com/mysubdir/myservice.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. […]
当我使用DataContractJsonSerializer序列化一个枚举值时,它序列化枚举的数值,而不是string名称。 IE: enum foo { bar, baz } 序列化foo.bar的值返回“0”,而不是“bar”。 我更喜欢反过来,有没有办法来覆盖这个? 编辑: 因为我不想更改序列化程序,所以我使用了一个简单的解决方法。 我暴露了类中的一个属性来序列化调用ToString的值,即: // Old [DataMember] public EnumType Foo { get { return _foo; } set { _foo = value; } } // New, I still kept the EnumType but I only serialize the string version public EnumType Foo { get { return _foo; } […]