Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从WPF客户端调用WCF方法没有任何作用_C#_Wpf_Wcf - Fatal编程技术网

C# 从WPF客户端调用WCF方法没有任何作用

C# 从WPF客户端调用WCF方法没有任何作用,c#,wpf,wcf,C#,Wpf,Wcf,我有一个运行的非常简单的WCF服务,它有一个基于方法结果返回枚举的方法 我已经通过一个非常简单的控制台应用程序在本地和互联网上对我的服务器进行了WCF服务测试,两者都运行良好。然而,一旦我在我的WPF应用程序中使用了字面上准确的代码,调用该方法就什么也做不了。没有异常,没有超时。在WCF方法的开头使用断点在本地测试它,我发现从WPF调用它时,它甚至没有达到那个程度 在app.config中生成的两个服务引用配置在控制台和WPF应用程序之间是相同的 编辑:本来希望不需要在这里放那么多代码,但我会把

我有一个运行的非常简单的WCF服务,它有一个基于方法结果返回枚举的方法

我已经通过一个非常简单的控制台应用程序在本地和互联网上对我的服务器进行了WCF服务测试,两者都运行良好。然而,一旦我在我的WPF应用程序中使用了字面上准确的代码,调用该方法就什么也做不了。没有异常,没有超时。在WCF方法的开头使用断点在本地测试它,我发现从WPF调用它时,它甚至没有达到那个程度

在app.config中生成的两个服务引用配置在控制台和WPF应用程序之间是相同的

编辑:本来希望不需要在这里放那么多代码,但我会把整个东西都扔掉

在WPF中,代码是从对话框中的按钮调用的。此按钮使用Caliburn.Micro触发协同路由调用。然后,WCF调用将在协同例程的Execute方法中被调用

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());
    }
}
public IEnumerator SendReport()
{
var result=new Coroutines.submitnewExceptionIsueResult(异常、用户注释、字符);
收益结果;
if(result.result==ErrorReportResult.OK)
TryClose();
其他的
//待办事项
}
公共类SubmitNewExceptionIssueResult:IResult
{
公共事件事件处理程序已完成;
private ErrorReporterClient _client=新的ErrorReporterClient();
私有异常_异常{get;set;}
私有字符串_userNotes{get;set;}
私有字符_字符{get;set;}
public ErrorReportResult结果{get;private set;}
公共SubmitNewExceptionSueResult(异常示例、字符串userNotes、字符)
{
_例外=例外;
_userNotes=userNotes;
_字符=字符;
}
public void Execute(ActionExecutionContext上下文)
{
结果=_client.senderErrorReport(JsonConvert.SerializeObject)(_异常,新JsonSerializerSettings
{
TypeNameHandling=TypeNameHandling.All
}),
_用户注释,
SerializeObject(_字符,新JsonSerializerSettings
{
TypeNameHandling=TypeNameHandling.All
}));
已完成(这是新的ResultCompletionEventArgs());
}
}

原因确实是某种线程。虽然对实现不满意,但它现在可以工作了

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new System.Action(() => { /* send report code */ }));

这确实是某种原因造成的。虽然对实现不满意,但它现在可以工作了

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new System.Action(() => { /* send report code */ }));

没有从以下问题开始:它是否达到了您上面提供的行?这只是我用来调用该方法的代码。创建客户端并调用方法是我所做的全部工作。问题可能与调用WPF应用程序
SendReport
的位置有关,而不是在
SendReport
本身。请编辑您的问题以包含呼叫代码,好吗?请在添加时添加代码requested@Nensec问题实际上是,
Execute
方法实际上没有被激发?没有从以下问题中获得:它是否达到了您上面提供的行数?这只是我用来调用该方法的代码。创建客户端并调用方法是我所做的全部工作。问题可能与调用WPF应用程序
SendReport
的位置有关,而不是在
SendReport
本身。请编辑您的问题以包含呼叫代码,好吗?请在添加时添加代码requested@Nensec问题实际上是
Execute
方法实际上没有被激发?