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 扩展方法相结合是正确的方法。
我正在尝试从 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 扩展方法相结合是正确的方法。