0

我正在尝试让一个简单的 WCF 服务工作,该服务将处理来自 REST HTTP POST 的传入数据流,我之前创建了 WCF Soap Webservices 没有问题,但是遇到了这个 POST 操作的问题。我正在尝试创建一个将接受传入 POST 的 WCF Web 服务。

我在 Visual Studio 中生成了一个新的 WCF 项目,当我使用 WCF 测试客户端测试创建的默认项目时,它可以正常工作。但是,当我执行以下操作以尝试制作一个接受 POST 的 WCF 时,我让它正确构建,我让它正确启动而没有错误,它说服务已添加,并且它也正确生成了一个 WSDL,但是当我尝试向其发布时,什么也没有发生。在 WCF 测试客户端中,发布操作有一个红色 x,并显示“Wcf 测试客户端不支持此操作,因为它使用 System.IO.Stream 类型”

该项目名为 WcfService1。

文件 IService1.cs 具有服务合同:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebInvoke(UriTemplate="post")]
    string post(Stream input);
}

文件 Service1.svc.cs 具有方法定义:

public string post(Stream input) 
{
    StreamReader sr = new StreamReader(input);
    String postdata = sr.ReadToEnd();
    sr.Dispose();

    // simple debug statement
    return "test";
}

我使用以下 html 来发帖:

<form method="post" action="http://localhost:49163/Service1.svc/post">
    Test Data: <input type="text" name="TestField" />
    <input type="submit" name="submit" value="Submit" />
</form>

我在http://blogs.southworks.net/erossetto/2007/09/03/raw-http-post-with-wcf/找到了一个示例,但我仍然遇到问题。我认为让它工作起来非常简单。

4

1 回答 1

1

将绑定方法更新为 webHttpBinding,如下例所示

<services>
  <service name="SampleService" behaviorConfiguration="WebBehavior">
    <endpoint address=""
              behaviorConfiguration="WebBehavior"
              binding="webHttpBinding"
              bindingConfiguration=""
              contract="ISampleService" />
  </service>
于 2013-06-25T18:58:44.510 回答