2012-09-06 2 views
0

나는이 머리카락을 머리카락으로 잡아 당깁니다."원격 서버가 오류를 반환했습니다 : NotFound"를 반환하는 WCF 서비스 참조 호출.

웹 서버에서 호출하기위한 WCF 인터페이스가 있습니다. 다른 모든 함수는 정상적으로 작동하지만 추가 한 새 함수는 "원격 서버가 오류를 반환했습니다 : NotFound." End.cs에서 자동으로 생성 된 Reference.cs 파일에 있습니다.

서버가 발견 된 것을 알고 있습니다. 서비스 측에서 디버거를 깨고 명확하게 호출되어 올바른 유형을 반환합니다.

이 잘못된 오류의 원인은 무엇입니까? "Reference.cs"에 충돌

[ServiceContract] 
public interface IDatabaseQueries 
{ 
... 
    [OperationContract(AsyncPattern = true)] 
    IAsyncResult BeginGetItemFromId(int itemID, AsyncCallback callback, Object state); 

    RmaItem EndGetItemFromId(IAsyncResult result); 
... 
} 

[DataContract] 
[KnownType(typeof(ItemType))] 
[KnownType(typeof(Location))] 
[KnownType(typeof(DateTime))] 
public class RmaItem 
{ 
... 
} 

[SilverlightFaultBehavior] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[KnownType(typeof(RmaItem))] 
[KnownType(typeof(RmaReport))] 
public class DatabaseService : IDatabaseQueries 
{ 
... 
public IAsyncResult BeginGetItemFromId(int itemID, AsyncCallback callback, Object state) 
{ 
    return new DatabaseResponse(itemID); 
} 

public RmaItem EndGetItemFromId(IAsyncResult result) 
{ 
    return GetRmaItemById((int)(result as DatabaseResponse).GetData); 
} 
... 
} 

:

public RMA.DatabaseServiceReference.RmaItem EndGetItemFromId(System.IAsyncResult result) { 
       object[] _args = new object[0]; 
       RMA.DatabaseServiceReference.RmaItem _result = ((RMA.DatabaseServiceReference.RmaItem)(base.EndInvoke("GetItemFromId", _args, result))); 
       return _result; 

편집 : 나는 다른 모든 기능을 말할 때

내가 같은 IDatabaseQueries 인터페이스입니다 추가 기능을 의미한다. 2 :

EDIT 문제가 필드 (ItemType은) 등의 열거를 사용 하였다 낸다. 위에서 보듯이 ItemType은 알려진 유형입니다. 그 유형에 실종 된 특수한 상태가 있습니까? 다음은 감속입니다.

[DataContract] 
public enum ItemType 
{ 
    LOCATION, PART, ASSEMBLY 
} 
+0

나는이 느낌이 응답 해 주셔서 감사합니다. 이 형식을 반환하는 첫 번째 함수 및 문제가있는 유일한 함수입니다. 나는 무엇이 없는가 ?? – JeremyK

답변

0

해결되었습니다.

ItemType 열거 형의 각 값과 함께 EnumMember가 누락되었습니다.

[DataContract] 
    public enum ItemType 
    { 
     [EnumMember] 
     LOCATION, 
     [EnumMember] 
     PART, 
     [EnumMember] 
     ASSEMBLY 
    } 

내가 형 RmaItem을 반환하고 있기 때문에 McAden

2

Silverlight는 모든 오류를 이해하지 못합니다. 문제는 서버가 "찾을 수 없음"을 반환하는 것이 아니라 실버 라이트가 wcf가 반환 한 오류를 찾아 내려고 찾을 수 없다는 것입니다.

this과 같은 방법을 사용하여 자세한 정보를 확인하거나 Fiddler과 같은 패킷 스니퍼를 사용할 수 있습니다.

관련 문제