첫 번째 문제는 object
을 반환한다는 것입니다.
WebService에서 정의 (WSDL)를 생성 할 때 실제 유형을 모른 채 어떻게 정의가 생성되기를 기대합니까?
[Serializable]
public class Post
{
public int PostID {get;set;}
public int ThreadID { get; set; }
public string Subject { get; set; }
public string Body { get; set;}
}
와 같은 클래스를 반환하기 위해 정의를 변경 : 최고 (로직, 데이터 만) 같은 -
당신은 DTO 스타일을 소개한다.
코드 양은 매우 가벼운 편입니다.
[편집] 위의 해결 방법으로 문제가 해결됩니다. 그러나 문제의 정확한 원인은 다음과 같습니다.
.cs 파일에서 작업 할 때 사용되는 컴파일러는 프로젝트의 대상 프레임 워크 (여기 3.5)의 컴파일러입니다. 컴파일 시간에 컴파일이 발생합니다.
.asmx 파일에서 작업 할 때 asp.net 응용 프로그램을로드 할 때 컴파일이 발생합니다. 컴파일러는 asp.net 런타임의 컴파일러에서 사용되며 .Net 3.5의 경우 2.0 런타임 용 컴파일러입니다. 프레임 워크 3.5는 새로운 클래스 세트이기 때문에 CLR은 여전히 V2에 있습니다 (V4로 변경됨). 이 경우 프로젝트가 3.5 인 경우에도 .cs 파일의 코드 만 3.5 언어 기능을 사용할 수 있습니다. aspx 및 asmx 파일의 모든 코드는 V2 언어 기능 만 사용할 수 있습니다.
로 변경이 대답을 참조하십시오 : 그게 해결 않습니다를? http://stackoverflow.com/a/3314483/23354 - 참고 : 이것은 컴파일러를 행복하게 만듭니다. 나는 Fredrik/Steve/Paul/Lloyd와 동의한다. ** 좋은 접근이 아니다. –
구체적인 유형을 반환한다, 새로운 ConcreteType() {PostId = yada; } – Lloyd