繁体   English   中英

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

[英]How to debug a WCF service in a hosted solution?

我创建了一个相当简单的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");
    }
}

你有一个有趣的问题,我玩了它并在http://blogs.msdn.com/b/carlosfigueira/archive/2011/08/02/wcf-extensibility-system-diagnostic-的帖子中写了一个解决方案。 tracing.aspx

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

尝试下面

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

如果它不起作用我也会尝试

[OperationContract]

这样,如果在服务上发生某些事情,您将在客户端获得反馈。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM