服务堆栈如何确定可用服务?

时间:2013-10-08 10:37:23

标签: servicestack

我使用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不将此视为可用服务?

1 个答案:

答案 0 :(得分:1)

从评论中复制,以便更容易找到,更具可读性和准确性

当我遇到这个问题时,我做了很多事情:

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

2 - 在UploadFileService类中,请确保您引用“ServiceStack.ServiceInterface.Service”而不是“System.Web.Services.Description.Service这是不可能的,因为类可以不继承自System.Web.Services.Description.Service

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