ServiceStack:Dto.ToAbsoluteUri 抛出异常抱怨 AppHost

ServiceStack: Dto.ToAbsoluteUri throws exception complaining about AppHost

我正在尝试从 dto 对象获取 AbsoluteUri。

不出所料,所有这些都给了我 RelativeUri:

dto.ToUrl();
dto.ToGetUrl();
dto.ToRelativeUri("GET");

自然地,我希望 dto.ToAbsoluteUri("GET"); 能准确地给出我想要的,但它会抛出一个异常消息:

ServiceStack: AppHost does not exist or has not been initialized. Make sure you have created an AppHost and started it with 'new AppHost().Init();' in your Global.asax Application_Start() or alternative Application StartUp

我目前的解决方案是:

$"{Client.BaseUri[..^1]}{dto.ToUrl()}";

注:Client是一个JsonServiceClient

我知道这是次要的,我可以轻松解决它,但这不应该起作用还是我错过了其他方式?

能够解析 Absolute URL,ToAbsoluteUri() 扩展方法需要访问 AppHost 才能使用任何已配置的 Base URL,即:

var absoluteUrl = HostContext.ResolveAbsoluteUrl("~/".CombineWith(relativeUrl), req);
return absoluteUrl;

其他扩展方法仅引用 return 不需要它的相对 URL。

ServiceStack 的客户端库无法知道 Absolute URL 所以将 BasePath 与相对 URL 扩展方法相结合是正确的方法。