2011-10-19 48 views
3

私はWCFレストサービスを持っています。私は4.0 restサービスアプリケーションを使用して作成したので、SVCなしです。サーバとクライアントの不一致

私は、このサービス契約を結んでいる:

[ServiceContract] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
public class Service1 
{ 


    [WebGet(UriTemplate = "/Login/?username={username}&password={password}", ResponseFormat= WebMessageFormat.Json)] 
    public Response Login(string username, string password) 
    { 

     Response res; 
     BillboardsDataContext db = new BillboardsDataContext(); 
     var q = from lgin in db.logins 
       where lgin.username == username && lgin.password == password 
       select lgin; 
     if (q.Count() != 0) 
     { 
      res = new Response(true, "Login successful"); 
      return res; 
     } 
     else 
     { 
      res = new Response(false, "Login failed!"); 
      return res; 
     } 


    } 

    [WebInvoke(UriTemplate = "", Method = "POST")] 
    public void Upload(Stream fileStream) 
    { 
     FileStream targetStream = null; 
     string uploadFolder = @"C:\inetpub\wwwroot\Upload\test.jpg"; 
     using (targetStream = new FileStream(uploadFolder, FileMode.Create, 
      FileAccess.Write, FileShare.None)) 
     { 
      const int bufferLen = 65000; 
      byte[] buffer = new byte[bufferLen]; 
      int count = 0; 
      while ((count = fileStream.Read(buffer, 0, bufferLen)) > 0) 
      { 
       targetStream.Write(buffer, 0, count); 
      } 
      targetStream.Close(); 
      fileStream.Close(); 
     } 
    } 

} 

このweb.configファイル:

<services> 
    <service name="BillboardServices.Service1" behaviorConfiguration="Meta"> 
    <endpoint name="restful" address="" binding="webHttpBinding" behaviorConfiguration="REST" contract="BillboardServices.Service1" /> 
    <endpoint name="streamFile" address="/Upload" binding="basicHttpBinding" bindingConfiguration="streamBinding" contract="BillboardServices.Service1" /> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="REST"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="Meta"> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
     <serviceMetadata httpGetEnabled="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="streamBinding" maxReceivedMessageSize="64000" maxBufferSize="64000" transferMode="Streamed" messageEncoding="Mtom"> 
     <readerQuotas maxDepth="64000" maxStringContentLength="64000" maxArrayLength="64000" maxBytesPerRead="64000" maxNameTableCharCount="64000"/> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

ログインサービスは非常にうまく動作しますが、私はアップロードアクションで問題が生じています。私はhttp://www.myhost.com/Upload経由でAndroidアプリを通してそれを呼び出し、私はこのエラーを取得する:

Content Type multipart/form-data; boundary=wjtUI0EFrpQhBPtGne9le5_-yMxPZ_sxZJUrFf- was sent to a service expecting multipart/related; type="application/xop+xml". The client and service bindings may be mismatched. 

私はこのエラーの情報を見つけることができません。誰もこれを前に見た?

ありがとうございました!

答えて

1

したがって、ログインだけでなく、両方のエンドポイントでwebHttpBindingを使用する必要があることが判明しました。

関連する問題