WCF服务接受后编码的multipart / form-data的(WCF service to a

2019-06-21 06:58发布

有谁知道,或更好,但有一个WCF服务,将接受表单POST编码的例子, multipart/form-data即。 从网页文件上传?

我想出了空对谷歌。

钽,蚂蚁

Answer 1:

所以,在这里去...

创建其中一个手术,接受其唯一的参数流服务合同,如下面WebInvoke装饰

[ServiceContract]
public interface IService1 {

    [OperationContract]
    [WebInvoke(
        Method = "POST",
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/Upload")]
    void Upload(Stream data);

}

创建类...

    public class Service1 : IService1 {

    public void Upload(Stream data) {

        // Get header info from WebOperationContext.Current.IncomingRequest.Headers
        // open and decode the multipart data, save to the desired place
    }

而配置,接受流数据,最大尺寸

<system.serviceModel>
   <bindings>
     <webHttpBinding>
       <binding name="WebConfiguration" 
                maxBufferSize="65536" 
                maxReceivedMessageSize="2000000000"
                transferMode="Streamed">
       </binding>
     </webHttpBinding>
   </bindings>
   <behaviors>
     <endpointBehaviors>
       <behavior name="WebBehavior">
         <webHttp />         
       </behavior>
     </endpointBehaviors>
     <serviceBehaviors>
       <behavior name="Sandbox.WCFUpload.Web.Service1Behavior">
         <serviceMetadata httpGetEnabled="true" httpGetUrl="" />
         <serviceDebug includeExceptionDetailInFaults="false" />
       </behavior>
     </serviceBehaviors>
   </behaviors>
   <services>     
     <service name="Sandbox.WCFUpload.Web.Service1" behaviorConfiguration="Sandbox.WCFUpload.Web.Service1Behavior">
      <endpoint 
        address=""
        binding="webHttpBinding" 
        behaviorConfiguration="WebBehavior"
        bindingConfiguration="WebConfiguration"
        contract="Sandbox.WCFUpload.Web.IService1" />
    </service>
  </services>
 </system.serviceModel>

此外,在对System.Web增加数据的允许的System.Web量

<system.web>
        <otherStuff>...</otherStuff>
        <httpRuntime maxRequestLength="2000000"/>
</system.web>

这仅仅是基础,但允许添加一个进步的方法来显示一个Ajax进度条,你可能要增加一些安全性。



Answer 2:

我不知道究竟你想在这里完成的,但有一个在“经典”基于SOAP的WCF没有内置支持捕获和处理表单提交的数据。 你必须自己做。

在另一方面,如果你在谈论用的WebHttpBinding基于REST的WCF,你可以肯定的是装饰与[WebInvoke()]属性,它会用HTTP POST方法来调用服务的方法。

    [WebInvoke(Method="POST", UriTemplate="....")]
    public string PostHandler(int value)

URI模板将定义的URI使用在HTTP POST应该去。 你必须挂钩,截至ASP.NET窗体(或任何你正在使用的实际做的文章)。

对于一个伟大的介绍休息风格WCF,看看阿隆Skonnard的屏幕投系列在WCF REST入门套件,以及如何使用它。



文章来源: WCF service to accept a post encoded multipart/form-data
标签: html wcf http