Tag: wcf

我可以使用UriTemplate将非string传递给WCF RESTful服务吗?

我可以做以下吗? [OperationContract] [WebGet(UriTemplate = "/foo/{id}")] string GetFoo(int id); 我希望我的服务既可以作为REST风格的服务,也可以作为RPC风格的SOAP服务。 如果可能的话,我想保留int作为整数,而不是手工parsing。

这可能是由于服务端点绑定不使用HTTP协议

我有一个WCF服务在我的本地机器上正常运行。 我把它放在服务器上,我收到以下错误: 接收到http://xx.xx.x.xx:8200 / Services / WCFClient.svc的HTTP响应时发生错误。 这可能是由于服务端点绑定不使用HTTP协议。 这也可能是由于HTTP请求上下文被服务器中止(可能是由于服务closures)。 查看服务器日志了解更多详情。] 我已经在url中的服务,它正常工作。 我所做的所有function是返回一个string的图像名称,所以传递的数据不是很多。 我已经跟踪了日志,它给了我相同的信息。 这是我的客户端configuration: <binding name="basicHttpBinding_IWCFClient" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> <endpoint name="basicHttpBinding_IWCFClient" address="http://localhost:4295/Services/WCFClient.svc" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IWCFClient" behaviorConfiguration="WCFGraphicManagementTool.Services.ClientBehavior" contract="WCFClient.IWCFClient" […]

什么是WCF服务参考.datasource文件?

什么是由Visual Studio中的“创build服务引用”自动生成的.datasource文件? 该文件中的评论是这样的: 这个文件是由Visual Studio .Net自动生成的。 它用于存储通用对象数据源configuration信息。 重命名文件扩展名或编辑此文件的内容可能 导致该文件被程序无法识别。 但是,这听起来像这些文件是可选的,所以我想知道他们用于什么。 我也想知道是否真的安全删除它们,因为它们经常导致XP上的path长度问题。 http://www.eggheadcafe.com/conversation.aspx?messageid=34104031&threadid=34104026 任何人都可以指向我一些关于这些文件的官方MS文档?

无法添加对dll的引用

当我在C#应用程序中添加一个.dll文件作为参考时,它显示一个错误: 无法添加对“…. dll”的引用。请确保该文件是可访问的,并且它是有效的程序集或COM组件。 ILDissassembler说没有有效的CLR头,所以我尝试使用regsvr32注册它,这给了我另一个错误: 模块“”已加载,但对DLLRegisterServer的调用失败,错误代码为“0x80004005” 我在64位Windows 7机器上使用VS2010终极版本。 可能是什么问题呢? 感谢任何提示/答复

服务没有应用程序(非基础设施)端点

我最近创build了一个WCF服务(dll)和一个服务主机(exe)。 我知道我的WCF服务工作正常,因为我能够成功地将服务添加到WcfTestClient。 但是,我似乎遇到了一个问题,当我从服务主机(EXE)使用我的WCF。 我可以添加一个对WCF(DLL)的引用到我的服务主机(EXE),并创buildexe的必要组件; 如服务安装程序,服务主机和app.config,编译,然后最终使用InstallUtil安装该exe文件。 但是,当我尝试在Microsoftpipe理控制台中启动服务时,服务在启动后立即停止。 所以我开始调查究竟是什么原因导致这个问题出现在应用程序日志中的事件查看器中的错误。 描述: 服务无法启动。 System.InvalidOperationException:服务“服务”没有应用程序(非基础设施)端点。 这可能是因为没有为您的应用程序findconfiguration文件,或者是因为在configuration文件中找不到匹配服务名称的服务元素,或者是因为服务元素中没有定义端点。 这个错误实际上是在OnStart产生的; 我的exe,当我执行此调用ServiceHost.Open() 。 我看过很多其他人遇到这个问题的post,但是大多数(如果不是全部的话)声称服务名称或合同; 命名空间和类名,没有被指定。 我在我的configuration文件中检查了这两个条目; 在EXE以及在DLL中,他们匹配完美。 我有办公室里的其他人仔细检查,确保我一点都不盲目,但当然他们得出和我一样的结论,一切看起来都是正确的。 在这一点上我真的很迷茫。 有谁能帮我解决这个问题吗? 另一件可能的原因是app.config永远不会被读取; 至less不是我认为应该阅读的那个。 这可能是问题吗? 如果是这样,我该怎么去解决这个问题。 再次,任何帮助将不胜感激。

WCF服务,如何增加超时?

可能看起来像一个愚蠢的问题,但在WCF的一切似乎比在asmx更复杂,我怎样才能增加svc服务的超时? 这是我到目前为止: <bindings> <basicHttpBinding> <binding name="IncreasedTimeout" openTimeout="12:00:00" receiveTimeout="12:00:00" closeTimeout="12:00:00" sendTimeout="12:00:00"> </binding> </basicHttpBinding> </bindings> 然后我的terminal被映射如下: <endpoint address="" binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout" contract="ServiceLibrary.IDownloads"> <identity> <dns value="localhost" /> </identity> </endpoint> 我得到确切的错误: 请求通道在00:00:59.9990000之后等待回复时超时。 增加传递给请求调用的超时值或增加绑定上的SendTimeout值。 分配给此操作的时间可能是更长时间的一部分。 在WCFtesting客户端中,有一个configuration图标,其中包含我的服务的运行时configuration: 你可以看到它与我所设定的值不一样吗? 我究竟做错了什么? <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IDownloads" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" […]

这个WCF错误是什么意思:“自定义工具警告:无法导入wsdl:portType”

我在我的解决scheme中创build了一个WCF服务库项目,并为此提供服务引用。 我使用类库中的服务,所以除了类库之外,还有我的WPF应用程序项目的引用。 服务设置简单 – 只有改变才能获得asynchronous服务function。 一切工作正常 – 直到我想更新我的服务参考。 它失败了,所以我最终回滚并重试,但即使这样也失败了! 因此 – 更新服务引用失败,不做任何更改。 为什么?! 我得到的错误是这样的: Custom tool error: Failed to generate code for the service reference 'MyServiceReference'. Please check other error and warning messages for details. 警告提供了更多信息: Custom tool warning: Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Error: […]

WCF反序列化如何在不调用构造函数的情况下实例化对象?

WCF反序列化有一些魔力。 它如何在不调用其构造函数的情况下实例化数据协定types的实例? 例如,考虑这个数据合同: [DataContract] public sealed class CreateMe { [DataMember] private readonly string _name; [DataMember] private readonly int _age; private readonly bool _wasConstructorCalled; public CreateMe() { _wasConstructorCalled = true; } // … other members here } 通过DataContractSerializer获取此对象的实例时,您将看到_wasConstructorCalled字段为false 。 那么,WCF如何做到这一点? 这是别人可以使用的技术,还是隐藏起来的?

获取WCF 3.0中的客户端IP地址

显然你可以在WCF 3.5中轻松获取客户端IP地址,但不能在WCF 3.0中获得。 任何人都知道?

为什么开发人员应该使用Web服务而不是直接连接到数据库?

我正在寻找一个“前十名”的原因列表,我们应该通过Web服务连接到远程数据库,而不是直接连接到数据库。 这是一个内部的辩论,我现在是亲networking服务,但失去了争论。 我有一个WCF / Web服务的基本把握,没有其他人做的。 我们可以做任何我们想要的事情,但是我们需要坚持我们现在select的任何事情。 这是我想出来的。 还有吗? 如果configuration正确,WCF Web服务可以更安全。 对数据库的更改只需要在服务级别(configuration文件或重新编译服务)进行。 一旦安装和托pipe,Web服务更容易使用。