3

玩转https://github.com/ServiceStack/RazorRockstars,非常喜欢。只是想知道是否有人可以帮助我找到一种在使用自托管应用程序时从视图中输出绝对 URL 的方法?

这是我能想到的最好的:

public static class UrlHelperExtensions
{
    public static string AbsoluteContent(this UrlHelper urlHelper, string path)
    {
        var baseUri = new Uri(EndpointHost.AppHost.Config.WebHostUrl);
        return new Uri(baseUri, path).ToString();
    }
}

配置主机时我设置 AppHost.Config.WebHostUrl 的位置

更新

抱歉,我应该更清楚一点,我实际上是在以一种稍微不标准的方式使用 ServiceStack——作为呈现电子邮件模板的一种方式。所以我有一项服务,例如:

public class EmailService : Service
{
    public void Post(EmailTask request)
    {
        var format = GetAppHost().Plugins.Find(x => x is RazorFormat) as RazorFormat;
        var template = format.ExecuteTemplate(request.Model,   request.Template.ToString(), string.Empty);
        var html = template.Result;
        // email the rendered template etc
    }
}

渲染模板时,Request 对象为 null

4

1 回答 1

1

在 Razor ViewPageBase中,您可以访问HTTP base.Request,并且base.Response可以在其中访问有关请求的元数据,例如base.Request.AbsoluteUri返回当前的 Request Url,其中应该包含您想要的信息。

于 2012-12-21T01:46:28.193 回答