3

我有几个使用 ServiceStack 定义的服务,它们工作正常。我使用以下请求对象添加了一个新对象

namespace LCS.Presentation.API.Model.DocumentTemplates
{
    [Authenticate]
    [Route("/document/{Type}/{Id}", "GET,PUT")]
    [Route("/document/{Type}", "POST")]
    public class UploadFileRequest : IReturn<UploadFileResponse>
    {
        public long Id { get; set; }
        public string Type { get; set; }
        public string Filename { get; set; }
        public string File { get; set; }
    }
}

我定义了一个响应对象:

public class UploadFileResponse : IResponseBase
{
    public string Path { get; set; }
    public ResponseStatus ResponseStatus { get; set; }
}

和服务的书面存根:

public class UploadFileService : Service
{
    private ICoreLoggingService Logger { get; set; }

    public UploadFileService(ICoreLoggingService logger)
    {
        Logger = logger;
    }
    public UploadFileResponse Post(UploadFileRequest request)
    {
        Logger.Debug("Got POST file request: {0}", request); 
        var response = new UploadFileResponse();
        return response;
    }

    public UploadFileResponse Put(UploadFileRequest request)
    {
        Logger.Debug("Got PUT file request: {0}", request);
        var response = new UploadFileResponse();
        return response;
    }

    public UploadFileResponse Get(UploadFileRequest request)
    {
        return null;
    }
}

但是,当我转到元数据页面 (/api/metadata) 时,我没有看到 UploadFileRequest 服务与我的其他服务一起列出。

ServiceStack 配置为植根于 /api,并且我的所有其他服务正确显示在元数据页面中,因为配置为使用该路由。

我错过了什么导致 ServiceStack 不将其视为可用服务?

4

1 回答 1

1

从评论中复制出来,以便更容易找到、更易读和更准确

当我遇到这个问题时,我做了几件事:

1 - 在您的AppHost类中添加typeof(UploadFileService).Assembly到传递给基类的程序集数组以显式尝试加载它

2 -在 UploadFileService 类中,确保您引用的是 ' ServiceStack.ServiceInterface.Service' not ' System.Web.Services.Description.Service'这是不可能的,因为一个类不能继承自System.Web.Services.Description.Service

3 - 如果通过 Visual Studio 运行,请停止 IIS Express 以强制运行“Application_Start”。

于 2013-10-08T19:55:29.950 回答