我们的团队开始害怕更新我们解决方案中的服务参考,因为这是一个5分钟以上的投资.在Visual Studio的Web服务器中,一切都是localhost.
我的问题是 - 如何调试这个问题是什么?它一旦结束就可以正常工作,但是长时间的延迟是疯狂的.如果我有一个线索在哪里看,也许我可以解决这个问题.
我有一个问题似乎与这个问题相同.我无法为Visual Studio中的任何项目添加服务引用.我甚至格式化整个计算机,重新安装Windows(Windows 7旗舰版)和VS2010专业版.两次.这是我继承的工作计算机,我觉得很奇怪,即使格式化驱动器并重新安装所有内容后,我也无法为此计算机上的任何项目添加服务引用.
我100%确定.NET 3.5是我项目设置中的目标,甚至创建了一个空项目来试用它.结果相同.我不确定我错过了什么.我从TFS中提取原始解决方案(没有其他人有这个问题)所以它不像我在解决方案中缺少一些东西.
有什么想法吗?
编辑:
我刚刚创建了另一个帐户(管理员),我可以为该帐户下的项目添加服务引用.我错过了什么吗?我的原始帐户中有一个撇号 - 这会搞砸吗?
编辑2:
虽然这已得到修复,但我对修复操作不满意.我稍后会向微软公开一个错误,但我很想知道是什么原因引起了这个问题以及将来如何避免它.
编辑3:
我在微软(这里)打开了一个错误报告.
contextmenu asp.net-3.5 visual-studio-2010 service-reference
我有一个在IIS中托管的WCF Web服务.这是相同的配置:
当我尝试在我的WinForms客户端中使用此特定服务(当作为服务引用添加时)时,它会抛出此异常:
未提供用户名.在ClientCredentials中指定用户名.
但是当我将服务添加为"Web引用"时,我可以完美地执行所有方法.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="EMSServiceBehavior"
name="EMSService.EMSCRUD">
<endpoint address="" binding="basicHttpBinding"
bindingConfiguration="BasicHttpEndpointBinding"
name="BasicHttpEndpoint" contract="EMSService.IEMSCRUD">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="EMSServiceBehavior">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment …Run Code Online (Sandbox Code Playgroud) 当我尝试在 .NET 4.6.1 项目中更新或配置服务引用时,VS 抛出下一个错误:
无法解析目标框架“.NETFramework,版本=v4.6.1”的 mscorlib。如果未安装目标框架或框架名称格式不正确,则可能会发生这种情况。
路径长度没问题,我还检查了其他答案,但没有任何作用。也许有人有类似的事情?
c# mscorlib service-reference visual-studio visual-studio-2017
我有一个WPF应用程序,它使用对WCF服务的服务引用。在更新服务时,我需要更新服务参考,因此我右键单击它,然后单击“更新服务参考”。
这样做会导致客户端项目的App.config文件中出现重复的条目。
WSHttpBinding_ISomeService --> WSHttpBinding_ISomeService1。为什么要复制配置?它不只是应该更新名称吗?我该如何停止呢?
除了手动编码 Reference.cs 文件之外,是否有任何方法可以让 Visual Studio 允许多个服务引用共享命名空间?
我正在开发一个客户端应用程序,该应用程序使用属于同一解决方案的多个服务。类似于 Microsoft 为 MS-Project Server 提供的项目服务接口 (PSI) API。而不是为每个单独的服务引用使用不同的命名空间,例如:
MyProject.ProjectService.ProjectServiceClient
MyProject.ResourceService.ResourceServiceClient
MyProject.TimesheetService.TimesheetServiceClient
Run Code Online (Sandbox Code Playgroud)
如果我们可以将它们全部放入一个命名空间中,那就太好了,例如:
MyProject.Services.ProjectServiceClient
MyProject.Services.ResourceServiceClient
MyProject.Services.TimesheetServiceClient
Run Code Online (Sandbox Code Playgroud)
随之而来的是共享通用代码的能力。例如,如果这些服务中的任何一个暴露了相同的数据契约。现在,如果我想编写客户端可以使用的代码,我必须为每个服务代理创建一个单独的版本,因为公共契约存在于三个不同的命名空间中。看看我要去哪里?
有可能的?
更新
假设我无权访问服务代码(因为我没有),这意味着共享类库不是一个选项。在这种情况下我的选择是什么?
我已经从WSDL生成了服务引用。我已经成功地根据服务引用对客户端进行了编码。我一直在使用serviceRef.serviceMethod(params ...)模式来调用基于服务的方法。现在,我需要在发送的邮件中添加http标头。我找不到在哪里为服务的所有消息将它们设置为默认值,也找不到在调用某些方法时可以在何处设置它们的位置。一些文章建议我可以使用IClientMessageInspector,但是实现似乎很复杂。有什么建议么?
该项目是您的标准普通ASP.NET MVC 3应用程序,它与内部WCF服务进行通信.我们的ASP.NET MVC应用程序引用了一些外部库,包括流行的JSON.NET库.
仅当JSON.NET库是项目中的引用时才会出现此问题.我尝试使用WebForms和Windows Forms项目重新创建此问题,同样的事情发生了.
在我们的WCF服务中添加服务引用时,JSON.NET是我们项目中的引用,它构建服务引用,如下所示:
使用项目中引用的JSON.NET - 注意请求/响应类和奇怪的属性,如Id1和IdSpecified

但删除对JSON.NET的引用并更新服务引用按照我们想要的方式构建它,如下所示:
没有项目中引用的JSON.NET

...
世界上会发生什么?WCF项目中没有引用JSON.NET,所以我非常怀疑那里可能存在某种混淆.
一些可能有用的信息:
我在一个带有 Web 服务的 C# 项目中工作,我需要更新公司中每个环境的服务引用,我目前在 Visual Studio 中打开该项目,右键单击服务引用,更新它并创建已发布的站点,是否有任何方法可以更快地执行此过程,例如使用命令行,以便我无需进入 Visual Studio 即可更新服务引用并发布站点?我将不胜感激您的帮助,谢谢!
我有一个客户端/服务器应用程序,我正在从客户端删除服务引用。我是跟着这篇文章实现的,不用它也能实现访问服务器功能。这工作正常。
我遇到的问题是服务引用能够生成函数的同步/异步版本(我们使用的是异步版本),而直接通过接口访问函数,我们只能访问同步版本。有没有办法在没有服务引用的情况下异步调用 wcf 服务函数?这样做的唯一方法是让包装器在Task每次我想拨打电话时都创建一个?
这是访问服务功能的代码片段:
ChannelFactory<IService> channelFactory = null;
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:4504" + "/MyService");
channelFactory = new ChannelFactory<IService >(binding, endpointAddress);
IService channel = channelFactory.CreateChannel();
var result = channel.MyFunction();
Run Code Online (Sandbox Code Playgroud)
我想要的是能够做 var result = channel.MyFunctionAsync();
我也看过这个答案,但这将涉及为我们的接口中的每个函数创建委托,它有数百个函数
wcf ×5
c# ×3
.net ×2
app-config ×1
asp.net-3.5 ×1
asynchronous ×1
contextmenu ×1
http-headers ×1
json ×1
json.net ×1
mscorlib ×1
service ×1
web ×1
web-services ×1