2009-06-15 2 views
8

나는 ASP.NET 웹 서비스를 가지고 있습니다. 이 웹 서비스는 정상적으로 작동합니다. 그러나 WSDL은 일부 매개 변수를 선택적 (minoccurs = 0)으로 나열하고 다른 매개 변수는 선택적이 아닌 것으로 나열합니다. 선택적 매개 변수 중 일부는 실제로 선택 적이 지 않으며, 비 선택적으로 표시된 매개 변수는 실제로 선택적입니다. 이 문제를 해결하고 싶지만이 정보의 출처를 찾을 수 없습니다.ASP.NET 웹 서비스의 선택적 매개 변수

모든 기본 유형 (int, boolean 등)은 선택 사항이 아니며 다른 모든 매개 변수는 선택 사항으로 표시되어 있습니다. 그러나 나는 이것을 바꿀 수있는 위치를 찾을 수 없다. 프리미티브 값이 요청에 누락되어있는 경우 기본 값을 지정하고 어떤 비 기본 매개 변수가 실제로 선택 사항인지 지정하려고합니다. 내가 어디에서해야하니?

답변

7

ASP.net 웹 서비스를 말할 때 ASMX 확장을 사용하여 웹 서비스를 작성한다고 가정합니다. 이 경우에 일어나는 일은 모든 nullable 유형이 선택적이되고 non-nullable이 아닌 것이 선택적이된다는 것입니다.

아마도 생성 된 WSDL 파일을 수동으로 편집 할 수 있습니다. 그러나 wsdl이 재생성되면 다시 작업해야합니다.

나는 basisHttpBinding을 사용하여 WCF로 전환하는 것이 좋습니다 (클라이언트가 차이점을 알아 채지 못하도록하는 서비스 이름 제외).

[DataMember(IsRequired="false")] 
+0

이 대답은 거의 완전히 거짓이다. 선택적 매개 변수 대신 nullable을 사용할 수 없습니다. .Net 4.0 이후로 [선택 매개 변수] (http://msdn.microsoft.com/en-us/library/dd264739.aspx)를 사용할 수 있습니다. – Bora

+1

@Bora, 대답은 2009 년이었습니다. 그 당시에는 이것이 가능했습니다. –

+0

아무 문제가 없습니다. 답을 업데이트하면 모든 것이 잘 될 것입니다. – Bora

6

프리미티브는 참조 유형 이라기보다는, 그들이 종류 : WCF를 사용

당신은 필요 여부로 데이터 계약의 매개 변수를 표시 간단하게 할 수 있습니다. 을 "null 허용"유형으로 만들 수 있습니다.

짧은 - 손

int? i; 

또는 긴 손이 여기

Nullable<int> i; 
+0

매개 변수를 생략하고 (기본값을 사용하는 것) vs 값을 NULL로 설정하는 것을 구별하는 방법은 무엇입니까? – Shiv