【问题标题】:ASP.NET API Controller method custom route - Include current URLASP.NET API 控制器方法自定义路由 - 包括当前 URL
【发布时间】:2015-06-12 08:29:00
【问题描述】:

我正在尝试为具有以下结构的 API 控制器创建自定义路由:

/{currentUrl}/{methodName}

currentUrl 不作为参数出现。

例子:

/tool/compute/download

其中“download”是方法的名称,“/tool/compute/”是我们所在的当前页面。

顺便提一下,我正在使用 Sitecore。

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 你能给我们一些样品,你的目标是什么?
  • 我刚刚编辑了我的帖子并提供了一个示例
  • tool 是您的根目录名称,compute 是控制器名称吗?
  • 不,它是指向实际页面的链接(使用 Sitecore)。链接中没有控制器名称。我忘了提到我正在使用 Sitecore。

标签: asp.net-mvc routing sitecore custom-component asp.net-apicontroller


【解决方案1】:

您可以构建一个将工具名称作为参数的方法,如下所示:

    [Route("tool/{toolName}/download")]
    public HttpResponseMessage Get(string toolName)
    {
        var path = GetPathByToolName(toolName);
        HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
        var stream = new FileStream(path, FileMode.Open);
        result.Content = new StreamContent(stream);
        result.Content.Headers.ContentType =
            new MediaTypeHeaderValue("application/octet-stream");
        return result;
    }

【讨论】:

  • 问题是 {currentUrl} 它是通过 Sitecore 生成的。我需要照原样接受。这甚至可能吗?
  • 我不知道sitecore,也不知道他们是否有解决方案。如果不是,我会尝试在运行时扩展路由。 strathweb.com/2014/07/… 解释了如何扩展您自己的自定义逻辑并将其插入到属性路由引擎中。
猜你喜欢
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 2016-09-07
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多