我使用"添加服务引用..."在Visual Studio 2010中添加了一个Web服务.这会在名为的文件中生成一些代码Reference.cs.现在,如果我调用其中一种方法,我就不知道该方法可能抛出的异常.据推测,它可以抛出网络相关的例外,如SocketException或IOException?
可以在msdn或源代码内部检查.NET中的常规方法,以揭示可能抛出的异常,例如File.Open.这里很清楚我应该捕获哪些异常并重新抛出以在稍后阶段显示错误消息.
对于那些生成的方法,我怎么知道它们可能抛出的异常?
我按照说明向我的项目添加服务引用,默认情况下,勾选"引用程序集中的重用类型".
如果我勾选它,我会对像Label这样的控件发出含糊不清的警告,我现在必须完全声明.
如果我取消它,警告就会消失.
我的问题是:
为什么我要重用类型?
这究竟是什么意思?
如果我不使用它会有什么问题?
我正在开发一个将消耗大量Web服务的Web应用程序(ASP.NET 3.5).我为每个Web服务创建了一个单独的dll项目:这些项目包含服务引用和客户端代码.
但是,调用网站必须在其web.config中包含<system.serviceModel>信息(<bindings>和<client>节点),即使这些信息也在dll的app.config文件中!我已经尝试将serviceclass.dll.config复制到网站的bin目录,但这没有帮助.
有没有办法集中配置WCF客户端?
是否可以在visual studio中添加服务引用,它在使用netTcpBinding时生成本地代理类以调用WCF服务?
据我所知,服务引用方法需要服务公开WSDL,只有http绑定不支持?
也许,我可以在开发中本地添加服务引用,但是然后切换配置以在生产中的运行时使用nettcp吗?
我问的原因是因为我在Windows服务中托管(服务器2003,所以没有WAS,也不能使用IIS).而且我们无法更改执行HTTP命名空间预留的权限...因此我们无法使用HTTP绑定.NetTcp有效,但在这种特殊情况下,我们来回传递的对象图涉及EDMX模型在服务中生成的对象......因此我们无法在合同程序集中共享它.
提前致谢!
我有一个VS2010(RTM)解决方案,其中包含:
WCF服务项目
控制台WCF客户端项目
DataContracts和成员的
类项目一些简单类的类项目
我在控制台客户端项目中成功添加了服务引用并运行了客户端.然后我做了一个很长的开发循环,反复修改服务,然后更新控制台服务引用.然后,我使用引用和app.config更改了项目的命名空间和程序集名称以及.cs.我当然错过了一些因为它不会构建的东西所以我最终删除了项目引用和服务引用,成功清理和构建.
然后,我尝试再次添加服务引用,它发现了它,但是在确定时将"对象引用未设置为对象的实例".修复以下答案...
我使用WCF服务引用绑定到现有的ASMX Web服务.我有一个方法返回一个包含500k长度的字符串的DataSet对象.
作为标准的"老派"Web引用,调用此方法大约需要2-3秒才能完成.作为WCF服务参考,这需要20多秒才能完成.这对我们的系统现在有影响:(
我已经尝试改变绑定以最大化所有maxReceivedMessageSize和maxBytesPerRead等,但它没有任何区别.
为什么WCF引用速度要慢得多,我该怎么做才能解决这个问题?
我有一个项目,其中包含对Web服务的服务引用.有没有办法从代码隐藏中获取服务引用的实际http地址?
谢谢
使用MVC4和VS2012,我正在使用Service Reference,它自动生成一个Reference.cs文件.当我构建时,我会收到许多警告,因为这些错误可以解读
'缺少对公开可见类型或成员的XML评论......'
我在这里找到了类似的答案,其中引用了此博客中的解决方法,建议在CSProj文件中添加以下修复:
<Target Name="XamlGeneratedCodeWarningRemoved" AfterTargets="XamlMarkupCompilePass1">
<Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do echo #pragma warning disable > %%f.temp" />
<Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do type %%f >> %%f.temp" />
<Exec Command="for %%f in (@(XamlGeneratedCodeFiles)) do copy /y %%f.temp %%f" />
<Message Text="XamlGeneratedCodeWarningRemoved: @(XamlGeneratedCodeFiles)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于该Reference.cs文件,可能是因为它是针对性的Xaml?任何人都可以告诉我如何解决这个问题来处理Reference.cs文件或提出另一种方法来解决这个问题?
我不能只是pragma disable在自动生成的代码中添加一个或禁用Xml注释.
我们有一个Java后端,通过WSDL提供Web服务.有些操作返回xxWSResponse,其中只有一个属性:一个数组.
当我们在Visual Studio中向Web服务添加服务引用时,VS会生成直接返回数组的代码,而不是响应.如果响应中有更多属性或更多数组,它就像它应该的那样工作并返回响应.
操作样本:
<wsdl:operation name="retrieveParameterTasksList">
<wsdl:documentation> isIdempotent = NO -- TR:/retrieveParameterTasksList{retrieveParameterTasksList} -- EN:/retrieveParameterTasksList{retrieveParameterTasksList} </wsdl:documentation>
<wsdl:input message="tns:retrieveParameterTasksListRequestMsg" name="RetrieveParameterTasksListWSRequest" />
<wsdl:output message="tns:retrieveParameterTasksListResponseMsg" name="RetrieveParameterTasksListWSResponse" />
<wsdl:fault message="tns:SystemFault" name="SystemFault" />
<wsdl:fault message="tns:BusinessFault" name="BusinessFault" />
</wsdl:operation>
Run Code Online (Sandbox Code Playgroud)
RetrieveParameterTasksListWSResponse:
<xsd:complexType name="RetrieveParameterTasksListWSResponse">
<xsd:sequence>
<xsd:element form="qualified" name="taskListVOs" type="this:TasksListParameterDTO" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
VS自动生成的代码:
public namespace.TasksListParameterDTO[] retrieveParameterTasksList(namespace.RetrieveParameterTasksListWSRequest RetrieveParameterTasksListWSRequest) {
namespace.RetrieveParameterTasksListWSRequest1 inValue = new namespace.RetrieveParameterTasksListWSRequest1();
inValue.RetrieveParameterTasksListWSRequest = RetrieveParameterTasksListWSRequest;
namespace.RetrieveParameterTasksListWSResponse retVal = ((namespace.WebServiceV1x0)(this)).retrieveParameterTasksList(inValue);
return retVal.RetrieveParameterTasksListWSResponse1;
}
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么Visual Studio会忽略响应类型并返回其中的数组?如何让它返回实际响应?
谢谢!