У меня есть очень простая работа службы WCF, которая имеет единственный метод, который возвращает перечисление на основе результата метода.Вызов метода WCF от клиента WPF ничего не делает
Я протестировал эту службу WCF через очень простое консольное приложение как локально, так и через Интернет на моем сервере, и оба работают отлично. Однако, как только я использую, буквально точный код в моем приложении WPF, вызывающий метод, ничего не делает. Никаких исключений, без тайм-аута. Проверяя его локально с точкой останова в начале метода WCF, я обнаружил, что он даже не достигает этого, когда вы вызываете его из WPF.
Обе конфигурации ссылок службы, которые были сгенерированы в app.config, идентичны между консолью и приложением WPF.
Редактировать: Если бы надеяться, что здесь не нужно вводить столько кода, но я просто сброшу все это.
В WPF код вызывается с помощью кнопки в диалоговом окне. Эта кнопка вызывает вызов Coroutine с использованием Caliburn.Micro. Затем вызов WCF вызывается в методе Execute из Coroutine.
public IEnumerator<IResult> SendReport()
{
var result = new Coroutines.SubmitNewExceptionIssueResult(Exception, UserNotes, Character);
yield return result;
if (result.Result == ErrorReportResult.OK)
TryClose();
else
// TODO
}
public class SubmitNewExceptionIssueResult : IResult
{
public event EventHandler<ResultCompletionEventArgs> Completed;
private ErrorReporterClient _client = new ErrorReporterClient();
private Exception _exception { get; set; }
private string _userNotes { get; set; }
private Character _character { get; set; }
public ErrorReportResult Result { get; private set; }
public SubmitNewExceptionIssueResult(Exception ex, string userNotes, Character character)
{
_exception = ex;
_userNotes = userNotes;
_character = character;
}
public void Execute(ActionExecutionContext context)
{
Result = _client.SendErrorReport(JsonConvert.SerializeObject(_exception, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
}),
_userNotes,
JsonConvert.SerializeObject(_character, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
}));
Completed(this, new ResultCompletionEventArgs());
}
}
Не попал в вопрос: он достигает линий, которые вы указали выше? –
Это просто код, который я использую для вызова метода. Создание клиента и вызов метода - это все, что я делаю – Perry
Проблема, скорее всего, связана с тем, где в приложении WPF вызывается «SendReport», а не в 'SendReport'. Не могли бы вы изменить свой вопрос, чтобы включить код вызова? –