#c# #.net #silverlight #wcf #silverlight-4.0
#c# #.net #silverlight #wcf #silverlight-4.0
Вопрос:
В службе WCF, используемой приложением Silverlight 4, я получаю эту ошибку:
{Система.ServiceModel.Исключение CommunicationException: Удаленный сервер вернул ошибку: не найден. —> System.Net.WebException: удаленный сервер вернул ошибку: не найден. —> System.Net.WebException: удаленный сервер вернул ошибку: не найден. в System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult AsyncResult) в System.Net.Browser …
В какой-то момент он работал, но я внес обновления, и теперь он не работает. Я могу запросить службу по URL, и она загрузит страницу справки, и я смогу изучить WSDL. FireFox определяет, что я получаю ошибку внутренней службы 500, поэтому я уверен, что это фактор, но не уверен, почему?
У меня есть служба WCF, размещенная в cassini для целей тестирования.
Есть идеи? Спасибо.
Комментарии:
1. Есть ли у какой-либо из ваших сущностей свойство с перечислением? Я часто сталкивался с этим сбоем, когда свойству присваивается значение, скажем, 5, которое не определено в перечислении.
Ответ №1:
Также проверьте, все ли классы, которые вы используете в качестве части аргументов метода, содержат [DataContract] и [DataMember] Атрибуты. Если кажется, что все в порядке, вы можете попробовать трассировку WCF, чтобы точно определить проблему.
Включение его происходит следующим образом (web.config):
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:logTraces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
На результирующем файле можно дважды щелкнуть, и он будет открыт в trace examiner (часть инструментов Visual Studio). Ищите любые КРАСНЫЕ разделы, они приведут вас к любым исключениям, возникшим в ходе переговоров клиент-сервер.
Надеюсь, это поможет, приветствую!
Ответ №2:
Вы проверили все настройки конечной точки в ServiceReferences.Файл ClientConfig?
Ответ №3:
Проверьте:
- адрес конечной точки
- DataContract, DataMember, EnumMember атрибуты контракта данных конечной точки
- что вы не передаете значение int Enum, которого не существует в Enum
- если ваш контракт с данными унаследован от какого-либо класса, проверьте атрибут KnownType
- если вы используете ссылку на службу, убедитесь, что она обновлена