2017-03-08 13 views
0

게시물 datacontract를 사용하여 자바 스크립트에서 wcf 서비스로 이미지를 업로드하고 싶습니다. Google에서 datacontract를 사용하여 읽을 수 없습니다. 하나의 매개 변수가 스트림 일 때 다른 매개 변수가 없어야하기 때문에 메시지 계약으로 처리 할 수 ​​있습니다.datacontract를 사용하여 wcf 서비스 용 사용자 ID와 함께 이미지 업로드

그러나 일부 링크에서는 쿼리 문자열에 매개 변수를 전달하여이를 수행 할 수 있다고 언급되었습니다. (예 : WCF Restful service file upload with multi-platform support) 스트림을 매개 변수로 사용하는 경우 다른 매개 변수를 포함해서는 안된다는 오류가 계속 발생했습니다. 하지만 쿼리 문자열에서도 가능하지 않습니까? 다음은 내 코드

[OperationContract] 
    [WebInvoke(Method = "POST",UriTemplate = "/UploadFile/userId={userId}", BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    void UploadFile(string userId,Stream uploadingDetails); 

답변

0

입니다 스트림 paramenter는 조작 계약의 마지막 매개 변수이어야한다. v3.5 또는 4.0을 사용하는 경우 오류가 표시됩니다. 그러나 당신은 그것을 무시할 수 있습니다.

[DataContract] 
public class UploadData 
{ 
    [DataMember] 
    string userId { get; set; } 

    [DataMember] 
    Stream uploadingDetails { get; set; } 
} 

public class YourService : IYourService 
{ 

    public bool UploadFile(UploadData request) 
    { 
    } 
} 

을하거나 UR URL에 SVC는 피하려고, 스트림을 사용하는 동안 당신은 또 하나 개의 옵션이 있습니다 : 아니면 당신은 같은 일을 시도 할 수 있습니다. 아래의 코드를 추가합니다

public class Global : System.Web.HttpApplication 
{ 
    RouteTable.Routes.Add(new ServiceRoute("yourApp/yourService/upload", new WebServiceHostFactory(), typeof(YourService))); 
} 

및 서비스에 대한 아래의 속성을 장식 :

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

을 아래와 같이 서비스 호출 도와 didnt는 귀하의 첫 번째 코드 샘플

http://localhost:123456/yourApp/yourService/upload/{userId} 
+0

안녕, 나는 여전히 같은 오류가 발생합니다. 다른 샘플에 대해서도 전체 코드 샘플 (및 양식 자바 스크립트 호출 방법)을 제발 제공해 주실 수 있습니까? 감사 . –