2014-01-08 1 views
0

솔루션에 웹 앱 프로젝트와 실버 라이트 프로젝트가 있습니다. 나는 웹 응용 프로그램에서 WCF 파일을 가지고 있고, 나는 또한 그것을 삭제하고 다시 추가하려고 한 ServiceReferenceServiceReference를 업데이트 할 수 없거나 삭제 한 후 다시 추가 할 수 없습니까?

There was an error downloading 'http://localhost:5678/DataForSilverlight.svc/_vti_bin/ListData.svc/$metadata'. 
The request failed with HTTP status 404: Not Found. 
Metadata contains a reference that cannot be resolved: 'http://localhost:5678/DataForSilverlight.svc'. 
The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error. 
If the service is defined in the current solution, try building the solution and adding the service reference again. 

를 업데이트하는 동안 나는 아래의 오류가 발생하고, 또한 웹 응용 프로그램에서 WCF 파일을 삭제했습니다.

+0

당신은 서비스 실버 라이트 솔루션의 프로젝트가 아닌이 될 수 있습니다 잘 작동 : HTTP : // localhost를 : 5678/DataForSilverlight.svc합니다. 서비스를 추가하려면 실행 중이어야합니다. –

+0

DataForSilverlight.svc도 추가했습니다. 이전에 잘 작동하지만 업데이트 할 수없는 svc 파일 iam에서 일부 변경을 한 후 svc 파일의 코드에서 모든 것을 검사했지만 모든 것이 정상이지만 위의 오류가 발생합니다 –

+0

서비스를 제거하고 "프로젝트를 정리하십시오" . 다시 추가하십시오. 변경할 수있는 포트 번호가 있습니다. –

답변

0

이 오류는 일반적으로 솔루션 디버깅을 시작하고 중지 할 때마다 변경되는 동적 포트를 사용하여 IIS를 통해 웹 응용 프로그램 (및 WCF 서비스)을 노출 할 때 발생합니다.

이 문제를 방지하려면 웹 프로젝트를 마우스 오른쪽 단추로 클릭하고 '속성'을 선택하십시오. '웹'탭을 선택하십시오. 'Servers'라는 그룹 박스에서 원하는 네트워크 경로를 삽입하고 'Create Virtual Directory'버튼을 클릭하십시오. IIS는 웹 프로젝트를위한 가상 디렉터리를 만듭니다.

enter image description here

이제 실버 라이트 프로젝트에 서비스 참조를 추가 할 수 있습니다. 다음에 웹 프로젝트를 실행하면 IIS는 원하는 네트워크 경로를 사용하여 웹 응용 프로그램을 실행합니다.

또한, 서비스의 클래스 정의에 다음과 같은 속성이 선언되고 있는지 확인하십시오

:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class DataForSilverlight 

을하고 다음 줄은 <system.serviceModel> 섹션에서 Web.Config 파일에 존재하는 것을 내가 다시 변경을 befor했던 방법에서 변수 유형을 변경 한 이유하지만

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
+0

여전히 동일한 오류가 발생합니다 –

+0

@ GeneliaD'Suza 답변을 업데이트했습니다. –

+0

그래, 내가 위의 여전히 같은 오류를 다시 확인 –

0

그나마 알고

[OperationContract] 
     void SaveData(int UserId, string FileName, ExtendedImage File); 

0 나중에 문자열

[OperationContract] 
     void SaveData(int UserId, string FileName, string File); 

로 변경하고 모든 것을 지금

+1

그런 변화가 WCF 서비스의 404 오류를 담당한다는 것이 매우 이상하게 보입니다. 조언으로서 오해를 피하기 위해 클래스의 이름이 아닌 변수 이름을 쓰는 것이 좋습니다. 예를 들어 'string file'의 'string file'변수를 바꾸는 것이 좋습니다. 어쨌든, 당신은 그 문제를 해결했습니다. –

+0

WCF에서 메서드에 매개 변수로 외부 라이브러리의 개체를 전달하고있었습니다 : p ExtendedImage는 @AlbertoSolano –

관련 문제