0

我创建了一个相当简单的 Web 服务,它有 1 个方法: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");
    }
}
4

2 回答 2

2

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

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

于 2011-08-02T04:20:32.983 回答
0

尝试关注

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

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

[OperationContract]

这样,如果服务发生问题,您将在客户端获得反馈。

于 2011-07-26T03:41:58.047 回答