找不到WCF流json请求方法

时间:2015-05-19 06:58:32

标签: json wcf stream

使用json请求向WCF发送附加映像到wcf服务器时遇到问题。错误是不允许的方法。

这是界面

[ServiceContract]
    public interface IFileUploadServ
    {
        [OperationContract(Name = "UploadFile")]
        [WebInvoke(Method = "POST", UriTemplate = "/UploadFile", ResponseFormat = WebMessageFormat.Json)]
        string UploadFile(Stream stream);
    }

以下是实施

public string UploadFile(Stream stream)
        {
           // Code will be here to read stream and upload to DB
            return "Done";
        }

这是网络配置

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
  <system.web>
    
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="MyWcfRestService.WebHttp" maxBufferSize="2147483647"
                 maxBufferPoolSize="2147483647"
                 maxReceivedMessageSize="2147483647"
                 transferMode="Streamed"
                 sendTimeout="00:05:00">
          <readerQuotas  maxDepth="2147483647"
                         maxStringContentLength="2147483647"
                         maxArrayLength="2147483647"
                         maxBytesPerRead="2147483647"
                         maxNameTableCharCount="2147483647"/>
          <security mode="None" />
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="MyWcfRestService.FileUploadServBehavior" name="ImageUpload.FileUploadServ">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="MyWcfRestService.WebHttp" contract="ImageUpload.IFileUploadServ">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://10.100.103.41/DCASTestService/FileUploadServ.svc"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="MyWcfRestService.FileUploadServBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <standardEndpoints>
      <webScriptEndpoint>
        <standardEndpoint name="" crossDomainScriptAccessEnabled="true" />
      </webScriptEndpoint>
    </standardEndpoints>
  </system.serviceModel>
</configuration>

这是json电话

json call to wcf service hosted in server
 function UploadFile() {    
                fileData = document.getElementById("fileUpload").files[0];
                var data = new FormData();
                $.ajax({
                    url: 'http://10.100.103.41/DCASTestService/FileUploadServ.svc/UploadFile',
                    type: 'POST',
                    data : fileData,
                    cache: false,
                    dataType: 'json',
                    processData: false, // Don't process the files
                    contentType: "application/octet-stream", // Set content type to false as jQuery will tell the server its a query string request
                    success: function (data) {
                        alert('successful..' + data.UploadFileResult);
                    },
                    error: function (data) {
                        alert('Some error Occurred!' + data.UploadFileResult);
                    }
                });
            }

0 个答案:

没有答案