Questions tagged «wcf»

Windows Communication Foundation是.NET Framework的一部分,它为快速构建面向服务的应用程序提供了统一的编程模型。

13
WCF错误-找不到引用合同'UserService.UserService'的默认终结点元素
任何想法如何解决这一问题? UserService.UserServiceClient userServiceClient = new UserServiceClient(); userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted); userServiceClient.GetUsersAsync(searchString); 。 <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_UserService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:52185/UserService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_UserService" contract="UserService.UserService" name="BasicHttpBinding_UserService" /> </client> <behaviors> <serviceBehaviors> <behavior name="Shell.Silverlight.Web.Service3Behavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <services> …
98 c#  .net  wcf 

30
错误5:启动Windows Service时访问被拒绝
当我尝试启动在C#中创建的Windows服务时出现此错误: 到目前为止,我的代码: private ServiceHost host = null; public RightAccessHost() { InitializeComponent(); } protected override void OnStart(string[] args) { host = new ServiceHost(typeof(RightAccessWcf)); host.Open(); } protected override void OnStop() { if (host != null) host.Close(); host = null; } 更新#1 我通过为帐户NETWORK SERVICE授予权限解决了上述问题,但现在又遇到了另一个问题: 更新#2 服务无法启动。System.InvalidOperationException:服务'RightAccessManagementWcf.RightAccessWcf'具有零个应用程序端点(非基础结构)。这可能是因为没有为您的应用程序找到配置文件,或者是因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中未定义端点。在System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints(ServiceDescription说明)在System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description,ServiceHostBase serviceHost)在System.ServiceModel.ServiceHostBase.InitializeRuntime()在System.ServiceModel.ServiceHostBase.OnOpen() TimeSpan超时),位于System.ServiceModel.Channels.CommunicationObject。

9
WCF对没有“设置”的属性造成窒息。任何解决方法?
由于服务方法,我要传递一些类,并且该类具有仅获取属性: [DataContract] public class ErrorBase { [DataMember] public virtual string Message { get { return ""; } } } 服务端出现异常: System.Runtime.Serialization.InvalidDataContractException:类型'MyNamespace.ErrorBase'中没有为属性'Message'设置的方法。 我必须将此属性作为唯一的获取器,我不能允许用户为其分配值。我可以使用任何解决方法吗?还是我缺少一些其他属性?

5
.NET Remoting真的过时了吗?
每个人都在说WCF如何取代.NET Remoting,但我想知道它的准确性如何。我还没有官方消息表明Remoting已被弃用,而且在我看来,肯定存在一些场景,其中Remoting比WCF更有意义。与远程处理有关的对象或方法都没有被弃用,即使在框架的版本4.0中也是如此。据我了解,3.5和4.0框架中的System.AddIn使用远程处理。 有人有相反的官方说法吗? 在文章“ .NET中选择通讯选项(对于3.0,因为这是该文章的最新版本)”中,它指出: 8跨应用程序域通信 如果需要在同一过程中支持不同应用程序域中对象之间的通信,则必须使用.NET远程处理。 现在,这当然是不准确的,因为可以肯定地使用WCF来跨越应用程序域边界,但这是否为该情况提供了官方建议? 更新:我向Clemens Vasters(属于拥有Remoting和WCF的团队中的人)发送了以下问题: Clemens,我了解您是同时拥有远程处理和wcf的团队的成员,并且我有几个问题,我认为我需要参考原始资料。 首先,我有一个关于远程处理是否会消失的问题。具体来说,我们有一个相当大的应用程序,它广泛使用远程处理进行跨应用程序域内的通信,我想知道这种远程处理的使用是否被认为是“传统”。如果是这样,AppDomain.CreateInstance和朋友是否将替换为其他东西? 这是他的答复: 远程处理是.Net Framework的一部分,因此不会消失。自Windows NT 3.5 / Windows 95以来,COM一直在Windows中使用,并且一直没有消失,我也不希望很快消失。 也就是说,只有极少的开发投资用于Remoting。WCF是Remoting的后继产品,并取代了托管代码的COM / DCOM。 对于进程内跨应用程序域通信,远程处理是CLR的本机通信方式。如果看到在短时间内泵送大量数据或大量消息的性能问题,则应认真考虑WCF和NetNamedPipeBinding。
95 .net  wcf  remoting 

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

11
WCF超时异常详细调查
我们有一个应用程序,该应用程序具有在IIS7上运行的WCF服务(* .svc),以及各种查询该服务的客户端。该服务器正在运行Win 2008 Server。客户端正在运行Windows 2008 Server或Windows 2003 Server。我遇到了以下异常,事实上,该异常可能与大量潜在的WCF问题有关。 System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion …

1
Visual Studio Wcf测试客户端-输入一个Int数组
在快速测试WCF服务时,我发现Visual Studio WCF测试客户端非常有用。这是相对于Visual Studio安装目录的以下位置中的测试客户端: \ Common7 \ IDE \ WcfTestClient.exe 我有一些服务呼叫需要一个类型为System.Int32 []的 参数,因为我不断收到错误,我似乎无法弄清楚要为此参数输入哪些值 “ [输入的值]”不是此类型的有效值 尝试输入值27我尝试了以下操作,但均失败 27 {27} 新的System.Int32 [] {27} 任何人都可以帮忙怎么做

2
CORS-如何“预检” httprequest?
我正在尝试向WCF服务(我拥有)发出跨域HTTP请求。我已经阅读了几种处理跨域脚本限制的技术。因为我的服务必须同时容纳GET和POST请求,所以我无法实现某些动态脚本标签,其src是GET请求的URL。由于我可以自由地在服务器上进行更改,因此我开始尝试实现一种变通方法,该变通方法包括配置服务器响应以包括“ Access-Control-Allow-Origin”标头以及带有和OPTIONS请求的“预检”请求。我从这篇文章中得到了一个主意:让CORS工作 在服务器端,我的网络方法是在HTTP响应中添加“ Access-Control-Allow-Origin:*”。我可以看到响应现在确实包含此标头。我的问题是:如何“预检”请求(选项)?我正在使用jQuery.getJSON发出GET请求,但浏览器立即以臭名昭著地取消了该请求: Access-Control-Allow-Origin不允许使用原始http:// localhost 有人熟悉这种CORS技术吗?客户需要对我的请求进行哪些更改? 谢谢!
94 javascript  wcf  jquery  cors 

4
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> 然后我的端点被映射成这样: <endpoint address="" binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout" contract="ServiceLibrary.IDownloads"> <identity> <dns value="localhost" /> </identity> </endpoint> 我得到的确切错误: 请求通道在00:00:59.9990000之后等待答复时超时。增加传递给请求的调用的超时值,或者增加绑定上的SendTimeout值。分配给该操作的时间可能是较长超时的一部分。 在WCF测试客户端中,有一个配置图标,其中包含我的服务的运行时配置: 如您所见,它的值与我为它设置的值不同?我究竟做错了什么? <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" …
93 wcf 

4
WCF与ASP .Net Web API
使用每种技术的利弊是什么? WCF Web Api现在已合并到Asp.net Asp.net Web api现在支持自托管。 我仍然想像一下,如果我想为同一操作公开多个协议架构,我还是会倾向于WCF,或者Mvc端点也可以这样做吗? 新的Asp.Net Web API还会公开Wsdl吗?如果没有,客户将如何确定他们可以进行哪些操作? 可以说Mvc的最佳功能是modelbinder。WCF是否等效? 那么有人可以告诉我Asp.net Web API带来什么好处吗?WCF似乎绝大多数是imo。Mvc Web Api在WCF模型上唯一具有的优势可能是易于开发,但这意味着如果最终成为道路上的严重设计限制,则必须蹲下。

3
从HTTPClient响应解压缩GZip流
我正在尝试从WCF服务(从WCF服务到WCF服务)连接到返回GZip编码的JSON的api。我正在使用HTTPClient连接到API,并且已经能够以字符串形式返回JSON对象。但是,我需要能够将此返回的数据存储在数据库中,因此,我认为最好的方法是将JSON对象返回并存储在数组或字节或类似内容中。 我具体遇到的问题是GZip编码的解压缩,并且尝试了许多不同的示例,但仍然无法获得它。 以下代码是我建立连接并获得响应的方式,这是从API返回字符串的代码。 public string getData(string foo) { string url = ""; HttpClient client = new HttpClient(); HttpResponseMessage response; string responseJsonContent; try { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); response = client.GetAsync(url + foo).Result; responseJsonContent = response.Content.ReadAsStringAsync().Result; return responseJsonContent; } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); return ""; } } 我一直在关注几个不同的示例,例如这些StackExchange API,MSDN以及关于stackoverflow 的一些示例,但是我一直无法获得这些示例中的任何一个。 实现这一目标的最佳方法是什么,我是否走在正确的轨道上? 多谢你们。
93 c#  json  wcf  gzip 

6
为什么开发人员应该使用Web服务而不是直接连接到数据库?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我正在寻找“十佳”列表,列出为什么我们应该通过Web服务连接到远程数据库而不是直接连接到数据库。目前这是内部辩论,我是支持Web服务的专家,但失败了。我对WCF / Web服务有基本的了解,其他人没有。我们可以做任何我们想前进的事情,但我们需要坚持现在选择的一切。 这是我想出的。还有吗 如果配置正确,则WCF Web服务可以更安全。 对数据库的更改仅需要在服务级别(配置文件或重新编译服务)进行。 设置和托管后,Web服务将更易于使用。
93 wcf  web-services 

6
我们可以创建自定义HTTP状态代码吗?
我有REST和WCF服务,并希望根据操作发送自定义状态代码。 例如,当某些验证失败时,我想发送HTTP 444;当授权失败时,我想发送HTTP 455 问题是我们如何对SOAP和REST Web服务进行验证。 在客户端上,错误代码如何起作用,因为当您从WCF服务发送HTTP 400/500(使用SOAP)时,客户端上会抛出一个异常,显示状态代码。 现在,如果我发送新的自定义状态代码,客户端将如何处理?
92 c#  asp.net  wcf  http  wcf-rest 

16
服务具有零个应用程序(非基础结构)端点
我最近创建了WCF服务(dll)和服务主机(exe)。我知道我的WCF服务正常运行,因为我能够成功将服务添加到WcfTestClient。 但是,当我从服务主机(exe)中使用WCF时似乎遇到了一个问题。我可以将对WCF(dll)的引用添加到我的服务主机(exe),并为exe创建必要的组件。例如服务安装程序,服务主机和app.config,然后使用InstallUtil编译并最终安装exe。但是,当我尝试在Microsoft管理控制台中启动服务时,该服务在启动后立即停止。 因此,我开始研究到底是什么引起了该问题,并从事件查看器中的应用程序日志中发现了此错误。 描述: 服务无法启动。System.InvalidOperationException:服务“服务”具有零个应用程序(非基础结构)端点。这可能是因为没有为您的应用程序找到配置文件,或者是因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中未定义端点。 该错误实际上是在OnStart;中产生的。我的exe的名称,当我执行此调用时ServiceHost.Open()。我见过很多帖子,其他人也遇到过这个问题,但是大多数(如果不是全部)都声称服务名称或合同;未指定名称空间和类名称。我在配置文件中检查了这两个条目;在exe和dll中,它们完全匹配。我在办公室里有其他人在我身后仔细检查,以确保我不会在某一时刻失明,但他们当然得出了与我相同的结论,即一切看起来都正确地指定了。我对现在发生的事情确实迷失了。有人可以帮我解决这个问题吗? 可能发生这种情况的另一件事是,从未读取过app.config。至少不是我认为应该读的书。这可能是问题吗?如果是这样,我该如何解决这个问题。再次,任何帮助将不胜感激。

7
MemoryCache线程安全,是否需要锁定?
首先,让我把它扔在那里,我知道下面的代码不是线程安全的(更正:可能)。我正在努力寻找的是一种实现,而我实际上可能在测试中失败。我现在正在重构一个大型WCF项目,该项目需要一些(主要是)静态数据进行缓存,并从SQL数据库中进行填充。它需要至少每天过期一次并“刷新”一次,这就是为什么我要使用MemoryCache。 我知道下面的代码不应该是线程安全的,但是我不能让它在重负载下失败,而且使Google搜索显示两种实现方式的问题复杂化(带锁和不带锁以及是否有必要进行辩论的结合)。 能够在多线程环境中拥有MemoryCache知识的人可以让我确切地知道是否需要在适当的地方锁定,以便在检索/重新填充期间不会引发对remove的调用(很少调用,但这是必需的)。 public class MemoryCacheService : IMemoryCacheService { private const string PunctuationMapCacheKey = "punctuationMaps"; private static readonly ObjectCache Cache; private readonly IAdoNet _adoNet; static MemoryCacheService() { Cache = MemoryCache.Default; } public MemoryCacheService(IAdoNet adoNet) { _adoNet = adoNet; } public void ClearPunctuationMaps() { Cache.Remove(PunctuationMapCacheKey); } public IEnumerable GetPunctuationMaps() { if …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.