半 已解决
看来问题仅在调试模式下运行时存在, 并且只有在通过立即/观察窗口运行命令时才会这样做。
它只是这样工作。 谢谢你的回答。
我正在尝试从.net 2.0应用程序中使用WCF服务。
我已将其添加为Web引用,该类出现在intellisense中。
但是,从服务调用方法会返回错误
Cannot call <method> because it is a web method
服务
[ServiceContract]
[AspNetCompatibilityRequirments(RequirmentsMode = ApsNetCompatibilityRequirments.Allowed)]
public class ConsumerResponder
{
[OperationConract]
public List<string> GetStrings(int a, int b, int c)
{
return new List<string>{"hi"};
}
}
服务web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.ServiceModel>
<behaviors>
<endpointBehaviors>
<behavior name="bh1">
<endpointDiscovery enabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetada httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="Service.ConsumerResponder">
<endpoint address="" behaviorConfiguration="bh1" binding="basicHttpBinding" contract="Service.ConsumerResponder" />
<endpoint address="mex" binding="wsHtppBinding" contract="IMetadataExchange" />
</service>
</services>
</system.ServiceModel>
</configuration>
用法
using(ConsumerResponder cf = new ConsumerResponder())
{
List<string> result = cf.GetStrings(1, true, 2, true, 3, true);
}
从其他地方和调试中测试,服务确实返回值。
答案 0 :(得分:1)
[ServiceContract]
[AspNetCompatibilityRequirments(RequirmentsMode = ApsNetCompatibilityRequirments.Allowed)] public interface IConsumerResponder {
[OperationConract]
public List<string> GetStrings(int a, int b, int c);
}
public class ConsumerResponder:IConsumerResponder
{
public List<string> GetStrings(int a, int b, int c) {
return new List<string>; }
}
using(ConsumerResponder cf = new ConsumerResponder()) {
List<string> = cf.GetStrings(1,2,3); }
可能你可以试试这个而不是上课。
答案 1 :(得分:0)
.Net 2.0是运行时。所以我假设当你说.Net 2.0企业版时,你在谈论Visual Studio工具集(Visual Studio 2005)。
WCF首次出现在.Net 3.-所以.Net 2.0没有WCF。但是,您可以在.Net 2.0安装之上安装.Net 3.0并开始使用WCF。
答案 2 :(得分:0)
答案 3 :(得分:0)
您是否至少尝试使用SOAP UI测试您的服务,即在基本http绑定上托管的测试和服务工具。如果有任何问题,它肯定会让你知道吗?
答案 4 :(得分:0)
你拼错了“合同”。
[OperationConract]
public List<string> GetStrings(int a, int b, int c)
应该是
[OperationContract]
public List<string> GetStrings(int a, int b, int c)