我使用以下代码与 REST 服务进行通信:
[ServiceContract()]
interface ISomeService
{
[OperationContract()]
[WebGet()]
bool DoSomething();
}
WebHttpBinding binding = new WebHttpBinding();
ChannelFactory<ISomeService> channelFactory = new ChannelFactory<ISomeService>(binding, "http://localhost:12000");
channelFactory.Endpoint.Behaviors.Add(new WebHttpBehavior());
ISomeService service = channelFactory.CreateChannel();
service.DoSomething();
它在简单的测试应用程序中运行良好,但在我的实际应用程序中,我想在我自己的 REST 服务中调用它:如果调用了我的 REST 服务,我的服务应该调用另一个 REST 服务。
事情变得很奇怪。在这种情况下,上面的代码不起作用,因为如果将它放在服务方法中,它会发送 POST 请求而不是 GET 请求,这当然会导致“方法不允许”错误。我的代码中的任何地方都没有属性 WebInvoke。
[ServiceContract()]
class MainService
{
[OperationContract()]
[WebGet()]
public void Test()
{
CallDoSomething(); // code from above: Sends POST instead of GET request
}
}
HTTP请求方式怎么会变?