我有一个WCF服务,在负载条件下给我这个错误(我似乎无法重新创建错误).我们一直试图找到解决方法大约一个星期,现在没有这样的运气..
我看到的错误有两个部分,
System.ServiceModel.CommunicationException:通过http通道传输数据时发生错误:(请求已中止:请求已取消.)
和:
System.Net.WebException:请求已中止:请求已取消.
我见过很多人建议通过重载Reference.cs文件和设置中的方法来禁用处于保持活动状态KeepAlive = false,但是,我们的客户端正在使用服务引用(除了Web引用)并且此选项不再存在.
我看到的另一个选项是向服务添加自定义绑定而不是BasicHttpBinding我们现在使用的,但是这会对那些使用webReference的人(因为CustomBinding没有启用SOAP)的后端支持Web服务.
有没有人以前处理过这个错误?有没有办法在不影响服务器端的情况下禁用WCF中的keep alive?是否还有其他任何可以导致此错误的活着?
.net wcf service-reference system.net.webexception communicationexception
Windows在路径中限制为259个字符.不幸的是,由于我们的一些服务引用名称,这开始给我们带来问题.
例如,我们的TFS分支具有已经很长的路径,然后.NET服务引用几乎加倍,因为它们总是使用完全限定的命名空间作为文件名:
Some.Really.Long.Fully.Qualified.Namespace.Service.Reference.Name.datasource
AFAIK,你不能改变服务引用的名称 - 但是我错了.可以这样做吗?
如果没有,这个烦人的问题还有其他可行的解决方法吗?
编辑:此外,我知道一个明显的解决方案是缩短我们的命名空间和/或路径,但假设在这种情况下我们不能这样做.:)我主要是想弄清楚如何控制服务引用的文件名.
更新:我遇到的根本问题是TFS不允许我获取特定分支的最新信息.这是确切的错误:
TF205022:以下路径包含超过允许的259个字符:[C:\ Some-really-long-259-character-path-here]
.net windows namespaces visual-studio-2010 service-reference
我使用webHttpBinding创建了一个新的IIS主机WCF服务,该webHttpBinding当前在我的开发机器上的IIS Express上运行,当我尝试"添加服务引用"时,服务正确构建并且Reference.cs文件看起来很好但是web .config或app.config文件未更新.
没有收到警告或错误消息.
服务和客户端都以.Net 4.5为目标.
服务配置
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="webInteropSecureBinding" allowCookies="false" maxBufferPoolSize="2097152" maxBufferSize="2097152" maxReceivedMessageSize="2097152">
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="PsmDataProvider.PsmProvider" behaviorConfiguration="SecureRest">
<clear />
<endpoint address="" binding="webHttpBinding" bindingConfiguration="webInteropSecureBinding" name="PsmProvider" contract="PsmDataProvider.IPsmProvider" listenUriMode="Explicit" behaviorConfiguration="webHttpBehavior" />
<endpoint address="mex" binding="mexHttpsBinding" name="mex" contract="IMetadataExchange" listenUriMode="Explicit" />
<host>
<baseAddresses>
<add baseAddress="https://localhost:44300/PsmProvider/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SecureRest">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" …Run Code Online (Sandbox Code Playgroud) 我在Windows Phone 8项目中工作,为了使用一些web服务,我添加了一个带有特定URL的服务引用.
我的问题是URL,因为它会不时地改变,所以我需要让用户在应用程序运行时从某个菜单插入新的URL.
我知道如何在Visual Studio中更改它,但现在我需要在应用程序运行时在代码中更改它.所以我的问题是:如何更改代码中的URL?
我做了一些搜索,文件"app.config"似乎完成了这项工作,但我的项目中没有任何"app.config",而且我看到Windows Phone项目没有使用这样的文件.
我正在使用Visual Studio 2008并且有一个WCF客户端可以对抗WCF服务.它们都位于相同的Visual Studio解决方案中.在我更改了WCF合同之后,我想更新客户端上的服务引用,以便在代理中对合同进行更改.
我的问题是代理代码没有重新生成.
当我选择更新服务引用时,会发生以下情况:
该对话框没有显示我将加速的文本"Generating\something \"(不记得确切的措辞).
如果我删除服务引用并再次添加它,则会正确生成代理.我使用与以前完全相同的设置添加服务,所以我认为这不是我可以通过更改客户端上的服务引用配置来解决的问题.
我怀疑的一件事可能是我在app.config中重命名了默认的wsHttpBindings.我还重命名了默认端点.这背后的原因是我需要多个端点,并且有一个端点名为'some-default-name',而一个端点有我自己的名字只是令人困惑.
删除服务并再次添加它的问题是Visual Studio在app.config(以及其他内容)中添加了一个不应该存在的新绑定.
以前有人见过这个问题吗?有谁知道它的解决方案?
在将第一个"服务引用"添加到Visual Studio 2010中的客户端项目时,我遇到了这个奇怪的命名空间问题.
如果我的项目的默认命名空间使用两个或更多部分,例如,MyCompany.MyApp当添加服务引用时,创建一个Reference.cs文件,其中包含MyCompany.MyApp.ServiceReferenceName具有大量具有完全限定名称的自动代码的命名空间,例如System.SerializableAttribute,System.Runtime.Serialization.DataContractAttribute.
Reference.cs文件将充满编译错误,因为编译器开始将System命名空间视为命名空间的子成员MyCompany.MyApp.你得到了很多错误:
The type or namespace name 'Runtime' does not exist in the namespace 'MyCompany.MyApp.System'...
如果我将Reference.cs文件顶部的命名空间修改为简单的命令,例如MyCompanyMyApp.ServiceRefernceName编译器就会运行并将系统命名空间引用识别为.net的System命名空间的解除.
我现在正在使用不同的解决方法,因为我真的想保留我的多部分命名空间.我目前的替代方法是global::在System命名空间引用之前附加,以强制编译器做正确的事情.实际上,如果"添加服务引用"向导使用T4模板,我可能只是修改那些以在源头嵌入我的变通方法.
我真的很想了解这里发生了什么以及多部分命名空间导致此问题的原因.据推测,命名空间比我想象的更多.其次,我希望找到一个更好的解决方案,而不是每次添加服务引用或使用某些T4模板时执行全局查找/替换.
因此,在将WCF服务代理代码放入Visual Studio中的项目时,似乎有几个主要选项:
使用Visual Studio的内置工具进行服务引用
使用一个简单的svcutil命令,例如svcutil http://[my
endpoint] /namespace:[my namespace] /noconfig(因为我在项目中使用了一些相当标准的绑定),并将生成的文件拖到我的项目中(或就地升级).
要明确的是,选项2感觉就像最好的一样,没有用于更新的内置工具.但是"服务引用"对话框生成的文件非常多. 我缺少的VS服务参考是否有任何模糊的好处?
我正在处理的情况不是最理想的,所以请耐心等待..
我们将使用外部(非.NET)SOAP-webservices.
出于某种原因,每个方法都使用自己的WSDL在单独的Web服务中实现.Web服务返回的
许多对象具有完全相同的设计,名称和xml命名空间.
使用" 添加服务引用 "是因为:
- 内部开发团队习惯了它
- 我们希望保留自动"更新服务参考"
第二个引用添加了"所有引用的程序集中的重用类型"选项.然而,
所有类都在新引用下再次生成.
是哪里的方式再利用的从班的第一参考?
我正在尝试为我的全新控制台应用添加服务参考,我收到以下错误:
无法签出当前文件.该文件可能是只读的或锁定的,或者您可能需要手动签出该文件.
参考.http://msdn.microsoft.com/en-us/library/t3ec2ktk.aspx
我甚至没有连接到源代码控制; 这是一个新项目,我没有勾选"包含在源代码管理中"复选框.
我还尝试通过右键单击它并取消选中"属性"下的"只读"框,使整个项目不是只读的.但是,项目的文件夹仍然是只读的...它不会因某种原因而改变.
如何将我的服务引用添加到项目中?
我使用"添加服务引用..."在Visual Studio 2010中添加了一个Web服务.这会在名为的文件中生成一些代码Reference.cs.现在,如果我调用其中一种方法,我就不知道该方法可能抛出的异常.据推测,它可以抛出网络相关的例外,如SocketException或IOException?
可以在msdn或源代码内部检查.NET中的常规方法,以揭示可能抛出的异常,例如File.Open.这里很清楚我应该捕获哪些异常并重新抛出以在稍后阶段显示错误消息.
对于那些生成的方法,我怎么知道它们可能抛出的异常?