2012-06-25 3 views
2

У меня есть очень простая работа службы 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()); 
    } 
} 
+0

Не попал в вопрос: он достигает линий, которые вы указали выше? –

+0

Это просто код, который я использую для вызова метода. Создание клиента и вызов метода - это все, что я делаю – Perry

+1

Проблема, скорее всего, связана с тем, где в приложении WPF вызывается «SendReport», а не в 'SendReport'. Не могли бы вы изменить свой вопрос, чтобы включить код вызова? –

ответ

0

Причина была действительно какой-то резьбой. Пока он не доволен реализацией, он теперь работает.

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new System.Action(() => { /* send report code */ })); 
Смежные вопросы