Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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# 如何在托管解决方案中调试WCF服务?_C#_Wcf_.net 3.5_Hosted - Fatal编程技术网

C# 如何在托管解决方案中调试WCF服务?

C# 如何在托管解决方案中调试WCF服务?,c#,wcf,.net-3.5,hosted,C#,Wcf,.net 3.5,Hosted,我创建了一个相当简单的web服务,它有一个方法:UploadFile。显然,它在我的机器上工作。然而,一旦我上传它,该方法将返回状态202(已接受)。但是,该文件从未到达那里,我也看不到任何错误。我几乎每秒都在代码中添加日志记录,但该方法似乎并没有实际执行 我如何调试这样的东西 以下是我的服务器端代码供参考: [ServiceContract] interface IUploaderService { [OperationContract(IsOneWay = true)] [W

我创建了一个相当简单的web服务,它有一个方法:UploadFile。显然,它在我的机器上工作。然而,一旦我上传它,该方法将返回状态202(已接受)。但是,该文件从未到达那里,我也看不到任何错误。我几乎每秒都在代码中添加日志记录,但该方法似乎并没有实际执行

我如何调试这样的东西

以下是我的服务器端代码供参考:

[ServiceContract]
interface IUploaderService
{
    [OperationContract(IsOneWay = true)]
    [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")]
    void UploadFile(string fileName, Stream fileContents);
}


[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class UploaderService : IUploaderService //ServiceHostFactory
{
    public void UploadFile(string fileName, Stream fileContents)
    {
        Log.Add("In UploadFile");
    }
}
试着跟随

[ServiceContract]
interface IUploaderService
{
    [OperationContract(IsOneWay = true)]
    [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")]
    [WebContentType("application/octet-stream")]
    void UploadFile(string fileName, Stream fileContents);
}
如果不行,我也会试试

[OperationContract]

这样,如果服务出现问题,您将在客户端得到反馈。

您遇到了一个有趣的问题,我对此进行了研究,并在上一篇文章中给出了解决方案


基本上,您可以添加一个自定义跟踪侦听器,从应用程序收集跟踪,而不是跟踪到文件(这是进行跟踪的常用方法)。您可以使用GoDaddy提供的一个数据库(MySql、SqlServer、EasyDB)或文章中链接的代码示例中的类似数据库,将跟踪存储在内存中,并通过另一个WCF服务公开它们。

您是否需要将操作设置为IsOneWay=true?如果不是,您将能够收到响应,以防服务器出现错误。请参阅@carlosfigueira我关闭了IsOneWay,现在,服务器返回一个网页,说明服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。。这基本上把我带到了最初的问题-我似乎无法调试代码。您的解决方案需要WebContentType属性,该属性不在.NET framework中。