在DTO上使用身份验证过滤器时,线型无效

时间:2012-08-09 18:13:50

标签: c# protobuf-net servicestack

  

无效的线型;这通常意味着您在不截断或设置长度的情况下覆盖了文件;见Using Protobuf-net, I suddenly got an exception about an unknown wire-type

我刚刚在我的DTO中添加了[Authenticate()]过滤器:

[RestService("/tr/file/")]
[RestService("/tr/file/{Path*}")]
[DataContract]
[Authenticate()]
public class File
{
    [DataMember(Order = 1)]
    public string Path { get; set; }
}

我得到了那个错误。我已经阅读了建议的链接,但没有任何关于它如何影响身份验证的提示。我的第一个想法是用户名/密码字段没有(Order=N)。我正在使用ProtoBufServiceClient,错误和标记应该很明显。

以前有人遇到过此问题,我应该尝试修复哪些内容?

这是我的Get()服务方法:

public override object OnGet(TRServiceLib.Types.File request)
{
    if (string.IsNullOrEmpty(request.Path))
        throw new ArgumentNullException("File path cannot be empty.");

    string path = System.IO.Path.Combine(this.Config.RootDirectory, Utils.GetSafePath(request.Path));

    System.IO.FileInfo file = new System.IO.FileInfo(path);
    if (!file.Exists)
        throw new System.IO.FileNotFoundException(request.Path);

    return new FileResponse()
    {
        Name = file.Name,
        Contents = System.IO.File.ReadAllBytes(path)
    };
}

PS:一切都按预期工作,没有[Authenticate()]过滤器属性。

0 个答案:

没有答案