我有一个非常简单的 WCF 服务正在运行,它有一个方法,该方法根据方法的结果返回一个枚举。
我已经通过一个非常简单的控制台应用程序在本地和通过 Internet 到我的服务器测试了这个 WCF 服务,并且两者都工作得很好。但是,一旦我在我的 WPF 应用程序中使用字面上准确的代码调用该方法,就什么也不做。没有例外,没有超时。在 WCF 方法的开头使用断点在本地测试它我发现从 WPF 调用它时它甚至没有达到那么远。
在 app.config 中生成的两个服务引用配置在控制台和 WPF 应用程序之间是相同的。
编辑:本来希望不需要在这里放那么多代码,但我会转储整个事情。
在 WPF 中,代码是从对话框中的按钮调用的。此按钮使用 Caliburn.Micro 触发协程调用。然后在协程的 Execute 方法中调用 WCF 调用。
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());
}
}