2

간단한 WebAPI 모델/저장소/컨트롤러가 있습니다.왜 주말 내 WebAPI REST 메서드가 손상 되었습니까?

http://localhost:48614/api/departments/ 

... 브라우저 페이지에서 테스트 부서의 데이터를 반환 할 것이다 :

내가 사용하는 브라우저에서이 금요일을 테스트 할 수 있었다.

지금,하지만 같은 시도는이와 함께 실패

enter image description here

이 정말 그래서? 지난주에 간단한 테스트가 잘 진행되었을 때이 농구를 뛰어 넘을 필요가 있습니까?

+0

코드 계약서에 몇 가지 사항을 추가 했습니까? – Will

+0

예, 그렇게했습니다. Contract.Requires (item! = null, "item"); 질문을하는 것이 이것이 문제라고 생각하게 만듭니다. 쉽게 해결할 수 있습니까 (그러한 모든 코드를 주석 처리하는 것 외에는)? –

+0

처음에는 암호화 된 것처럼 보이는 오류 메시지가 꽤 평범한 것 같지만 코드 계약을 사용하면이 모든 rigamarole이 필요합니다. –

답변

3

(나는 CC에 대한 전문가가 아니에요,주의,하지만 난에 유래에 하나를 재생하십시오. 이러한 진술 중 일부는 약간 잘못 될 수 있습니다)
Code Contracts는 어셈블리의 방법 단지 수집하지 않습니다 당신 참조 및 호출을 수행하여 유효성 검증을 수행합니다. 코드 계약은 유형 및 도구 모음으로 은 컴파일 후 일리노이를으로 다시 작성하여 정적 및 런타임 검사를 수행합니다. 이 rewriter here에 대한 자세한 내용을 볼 수 있습니다.

이들은 프레임 워크 나 Visual Studio의 공식적인 부분이 아닙니다. 작동하려면 download and install the tooling for visual studio해야합니다.

편집 가능한 ASP.NET 웹 사이트는 첫 번째로드시 aspx/cshtml 파일의 편집을 수행합니다. 코드 계약을 통해 컴파일 된 어셈블리를 다시 작성해야하므로이 작업은 ASP.NET 컴파일 단계에 포함되어야합니다. 나는 그 방법에 대해 확신하지 못한다. (나는 그 정보들을위한 포럼을 방문 할 것이다.) 그러나 그것은 마술에 의해 분명히 일어나지 않을 것이다.

이 오류는 컴파일이 VS 또는 ASP.NET에서 올바르게 수행되지 않는 것으로 나타납니다. 어느 쪽이든, 그것을 고치기위한 유일한 방법은 CC를 모두 버리거나 대화가 말하는 것을하는 것입니다.

Daniel Cazzulino에는 코드 계약과 유사한 많은 헬퍼 메소드가 포함 된 누젠을 통해 사용할 수있는 CC와 유사한 코드가 있습니다. 같은 것들은 Assert.NotNull(someArgument, "someArgument");. 그의 계정을 검색하면 찾을 수 있습니다.

2

IL 재 작성이 필요하지 않도록 Contract.Requires의 일반이 아닌 버전을 사용하십시오. 이에 대한 설명서가 제공됩니다.