2011-08-08 2 views
1

방금 ​​WCF CTP2 mar2011을 설치하고 브라우저를 통해 웹 서비스에 액세스하려고했습니다. (HTTP : // localhost를 : 99/서비스/MyDataService.svc /) 나는이 예외를 얻을 :예외 메시지는 '값을 null 일 수 없습니다. 매개 변수 이름 : propertyResourceType '

**The server encountered an error processing the request. The exception message is 'Value cannot be null. Parameter name: propertyResourceType'. See server logs for more details.** The exception stack trace is: 
at System.Data.Services.Providers.ResourceProperty..ctor(String name, ResourcePropertyKind kind, ResourceType propertyResourceType) 
at System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMemberMetadata(ResourceType resourceType, IProviderMetadata workspace, IDictionary`2 knownTypes, PrimitiveResourceTypeMap primitiveResourceTypeMap) 
at System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMetadata(IDictionary`2 knownTypes, IDictionary`2 childTypes, IDictionary`2 entitySets) 
at System.Data.Services.Providers.BaseServiceProvider.LoadMetadata() 
at System.Data.Services.DataService`1.CreateProvider() 
at System.Data.Services.DataService`1.HandleRequest() 
at System.Data.Services.DataService`1.ProcessRequestForMessage(Stream messageBody) 
at SyncInvokeProcessRequestForMessage(Object , Object[] , Object[]) 
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) 
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 

어떤 도움을?

그 문제는 일을 인터 휴식이 속성

[Required] 
    public byte TypeId { get; set; } 

    public ContactInfoType Type 
    { 
     get 
     { 
      return (ContactInfoType)TypeId; 
     } 
     set 
     { 
      TypeId = (byte)value; 
     } 
    } 

와 관련이 Update.Found에서 모든 WCF4에서 확인 것입니다. 그러나 그것은 WCF CTP2 마스터에서 예외를 던졌습니다. ContactInfoType - 열거 형입니다.

[IgnoreProperties ("Type")]는 아무런 효과가 없습니다.

업데이트 2. 문제를 조사한 후에 그 속성의 세터 부분에 던져진 예외를 알아 냈습니다.

public ContactInfoType Type 
    { 
     set 
     { 
      TypeId = (byte)value; 
     } 
    } 
+0

수정 구슬을 잃어 버렸습니다. 몇 가지 코드를 올리시겠습니까? 내가 말할 수있는 유일한 것은 당신이'ResourceProperty' 생성자에'null '을'propertyResourceType'으로 넘겨서는 안된다는 것입니다. –

+0

죄송합니다. 웹 서비스 본문이 추가되었습니다. 그리고 브라우저에서 열어서이 웹 서비스에 액세스하려고합니다. – DolceVita

답변

1
그냥 추측

하지만 this issue 수 :

엔터티 데이터 모델 유형을 DateTimeOffset의 속성 이있는 개체 유형을 포함

는, ADO.NET 데이터 서비스가를 던졌습니다 처리되지 않은 ArgumentNullException. 속성 유형을 DateTime으로 변경하면 예외가 사라집니다.

+0

모델에 DateTimeOffset 속성이 없습니다 ... – DolceVita

+0

WCF4를 참조하면 모든 것이 잘됩니다. 오류가 나타난 후 WCF4 CTP2 march2011을 사용합니다. – DolceVita

2

.NET 4.5 WCF Data Services 서비스 (아마도 WCF Data Services 5.0 사용)에서 동일한 오류가 발생했습니다. WCF Data Services 5.2.0으로 업그레이드 한 후 (NuGet을 통해) 위에 설명한 것과 같은 enum 유형의 속성 인 문제 속성을 가리키는보다 유용한 오류 메시지가 나타납니다.

와우, 열거 여전히 WCF 데이터 서비스에서 지원되지 않습니다 5.2.0 - 그것은 가장 여기에 기능에 대한 투표 것 : http://data.uservoice.com/forums/72027-wcf-data-services-feature-suggestions (투표 당신은 그것에 대해 걱정하는 경우!) 두 가지 옵션이 문제를 해결 작업에 현재있다

하나는 스칼라 속성을 노출하고 enum 속성에 [NotMapped] 속성을 사용하고 같은 단일 값으로 다시 가져 오는 것입니다. 또 다른 옵션은 enum 형식을 대체하는 "enum-like"엔터티 클래스를 만드는 것입니다. enum 형식은 열거 형 값이 DB에 저장된다는 이점이 있습니다. 다음은 예입니다.

public class Priority 
{ 
    public Priority() 
    {} 

    protected Priority(short id, string name) 
    { 
     Id = id; 
     Name = name; 
    } 

    public short Id { get; set; } 
    public string Name { get; set; } 

    public static readonly Priority Unknown = new Priority(0, "Unknown"); 
    public static readonly Priority Optional = new Priority(1, "Optional"); 
    public static readonly Priority Low = new Priority(2, "Low"); 
    public static readonly Priority Normal = new Priority(3, "Normal"); 
    public static readonly Priority High = new Priority(4, "High"); 
    public static readonly Priority Critical = new Priority(5, "Critical"); 
    public static readonly Priority Blocking = new Priority(6, "Blocking"); 
} 
관련 문제