2014-01-08 3 views
0

У меня есть проект веб-приложения и проект silverlight в решении. У меня есть WCF файл в веб-приложение, и я получаю ошибку ниже при обновлении ServiceReferenceНе удалось обновить ServiceReference или добавить еще раз после удаления?

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

Вы можете иметь Silverlight проект в решении, но не сервис: HTTP: // локальный: 5678/DataForSilverlight.svc. Чтобы добавить сервис, он должен быть запущен и запущен –

+0

Я также добавил DataForSilverlight.svc. раньше он работал хорошо, но после внесения некоторых изменений в файл svc iam не удалось обновить, я проверил все в коде svc-файла, и все в порядке, но оно дает вышеприведенную ошибку. –

+0

Удалить сервис, сделать «чистый проект», , Добавьте его снова. У вас есть номер порта, который может измениться. –

ответ

0

Эта ошибка обычно возникает, когда вы открываете веб-приложение (а затем свою службу WCF) через IIS с использованием динамического порта, который изменяется при каждом запуске и останавливает отладку решения.

Чтобы избежать этой проблемы, щелкните правой кнопкой мыши веб-проект и выберите «Свойства». Выберите вкладку «Веб». В групповом поле с именем «Серверы» вставьте нужный сетевой путь и нажмите кнопку «Создать виртуальный каталог». IIS создаст виртуальный каталог для вашего веб-проекта.

enter image description here

Теперь вы можете добавить ссылку на службу в проект Silverlight. В следующий раз, когда вы выполните веб-проект, IIS выполнит веб-приложение с использованием нужного сетевого пути.

Кроме того, убедитесь, что в определении класса вашего сервиса объявлены следующие атрибуты:

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

и что следующая строка существует в файле Web.Config, в <system.serviceModel> разделе:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
+0

все еще дает ту же ошибку –

+0

@ GeneliaD'Souza Я обновил ответ. –

+0

yep i повторная проверка выше все еще такая же ошибка –

0

не знаю почему, но я снова изменил тип переменной в методе, который был Befor перемен

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

позже изменил его в строку

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

и все работает отлично теперь

+1

Кажется очень странным, что подобное изменение является причиной ошибки 404 для службы WCF. Как совет, чтобы избежать недоразумений, лучше написать имя переменной, которое также не является именем класса. Например, лучше заменить переменную 'string File' в 'string file'. В любом случае, вы решили проблему. –

+0

Я передавал объект, который имеет внешнюю библиотеку как параметр метода в WCF: p ExtendedImage - пример выше @AlbertoSolano –

Смежные вопросы