2010-03-24 4 views
1

REST 스타터 키트를 사용하여 코드를 작성했으며 개발 컴퓨터에서 정상적으로 작동합니다. 나는 우리 서버에 업로드 그러나 페이지가 나에게 내가 선으로 코드 라인을 제거 한 다음과 같은 오류 메시지가 ...REST 스타터 키트를 사용할 때 ASP.net 오류 메시지가 발생했습니다.

CS1684: Warning as Error: Reference to type 'System.Runtime.Serialization.Json.DataContractJsonSerializer' claims it is defined in 'c:\WINNT\assembly\GAC_MSIL\System.ServiceModel.Web\3.5.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll', but it could not be found

을 제공하며 다음 코드 줄 오류를 유발 않은 것 같습니다 ..

HttpContent newOrganizationContent = HttpContentExtensions.CreateXmlSerializable(newOrganizationXml); 

실마리를 고치는 방법을 찾지 못했습니다. 내가 프레임 워크의 새로운 버전을 실행해야하기 때문에 그것이 될 수도 있다고 생각했는데, IIS에서 보면 2.0.50727의 버전이 실행 중이라고 말합니다. 프레임 워크 3.5를 사용할 때 라드 버전이라고 생각합니다.

매우 혼란스러운 아이디어가 있습니까?

존 처음에는

답변

1

나는 이것이 가능하다고 생각하기 때문에 당신이 .NET 프레임 워크 3.5SP1 설치 만 .NET의 3.5RTM하지 않았다하기 위해 배포하는 서버.

그러나 .NET 3.5 RTM System.ServiceModel.Web.dll 어셈블리를 확인하면 System.Runtime.Serialization.Json.DataContractJsonSerializer이 실제로 정의 된 것을 볼 수 있습니다.

compiler warning CS1684은 서버의 GAC에 System.ServiceModel.Web.dll 어셈블리가 있지만 System.Runtime.Serialization.Json. DataContractJsonSerializer이 정의되지 않은 어셈블리를 제안합니다. 내가 확인 할

그래서 일 : 배포 서버가 적어도 .NET 3.5 RTM을 실행하고 베타가 나 후보를 사용하지 않는 이상 남아되지 않았 출시되는

  • 확인합니다.

  • Visual Studio 2008에서는 프로젝트 속성에서 .NET 3.5의 "대상 프레임 워크"를 선택해야합니다.

마지막으로 당신은 문제가 직접 DataContractJsonSerializer를 소비하는 간단한 응용 프로그램을 노크하는 서버의 프레임 워크 설치에 놓여 있는지 확인하기 위해 할 수있는 확인합니다. 클래스에 대한 MSDN 문서 페이지에 예제가있다 : 서버가 그때 그때 .NET 프레임 워크 3.5 제거한 것입니다 귀하의 통제하에있는 경우 최후의 수단으로

DataContractJsonSerializer Class (MSDN)

가, 다시 설치에서 :

Microsoft .NET Framework 3.5 Service Pack 1 (Full Install)

업데이트 : 귀하의 의견으로 당

:

당신은 다음 기회는 3.5의 베타를 실행하는 경우 그 DataContractJsonSerializerSystem.ServiceModel.Web.dll 어셈블리에 없습니다.

나는 CTP, 베타 및 석방 후보자들을 기억하고있는 것으로 보입니다.이 지역에는 최근 변경 사항이 있습니다. 나는 DataContractJsonSerializer이 JSON 및 커뮤니티 압력의 증가로 인해 최근에 추가되거나 변경된 사항 중 하나임을 모호하게 기억합니다. 내 기억은 다소 모호하지만 종소리가 들린다.

DLL을 바꾸려면 현재 버전을 GAC에서 등록 취소하고 GACUTIL.exe 도구를 사용하여 RTM 1을 등록해야합니다. RTM과 베타 비트를 혼합하지 말고 예측할 수없는 행동에 스스로 빠져 있습니다.

+0

서버가 RTM이 아닌 3.5의 베타 버전 만 실행한다는 사실을 알고 있습니다. 서버에서 이미 실행중인 구성 요소가 엉망이 될까봐 걱정했기 때문에 서버를 업그레이드하지 않았습니다. 내가 한 일은 System.ServiceModel.Web.dll을 찾아 RTM을 실행하는 다른 서버 중 하나에서 발견 한 최신 버전으로 바꾸는 것입니다 (그리고 파일 크기가 더 큽니다). 불행히도 나는 여전히 같은 오류가 있습니다. – jonhobbs

+0

그냥 최신 서버에 hte 스크립트를 넣고 거기에서 호출하는 방법을 생각하고 있습니다. – jonhobbs

+0

@jonhobbs - '대체'라고 말하면 어떻게 대체 했습니까? – Kev

관련 문제