C# 如何在ASP.NET WebApi 2中的控制器外部生成URL?

C# 如何在ASP.NET WebApi 2中的控制器外部生成URL?,c#,asp.net-web-api2,C#,Asp.net Web Api2,如何从ASP.net WebApi 2中控制器外部的帮助器方法生成指向控制器操作的URL return new UrlHelper().Link("DefaultApi", new { Controller = "MyController", Action = "MyAction" }); 更新1 在WebApi中生成URL与ASP.net MVC不同 更新2 以下是路由配置: config.Routes.MapHttpRoute( "DefaultApi",

如何从ASP.net WebApi 2中控制器外部的帮助器方法生成指向控制器操作的URL

return new UrlHelper().Link("DefaultApi", new
{
    Controller = "MyController",
    Action = "MyAction"
});
更新1
在WebApi中生成URL与ASP.net MVC不同

更新2
以下是路由配置:

config.Routes.MapHttpRoute(
    "DefaultApi",
    "API/{Controller}/{Action}"
);

以下是我如何克服这一困难的:

线路图 辅助类 最后是调用helper类的
api控制器

public class DefaultController : ApiController
{
    [HttpGet]
    public string Default()
    {
        var link = HelperClass.GenerateLink(Request);
        return link;
    }
}

以下是我如何克服这一困难的:

线路图 辅助类 最后是调用helper类的
api控制器

public class DefaultController : ApiController
{
    [HttpGet]
    public string Default()
    {
        var link = HelperClass.GenerateLink(Request);
        return link;
    }
}

WebApi中生成URL可能与ASP.net MVCYes不同,但策略相同。只需将
HttpRequestMessage
传递给helper类并生成链接。请看我的答案。可能重复的否,在WebApi中生成URL不同于ASP.net MVCYes。它完全不同,但策略是相同的。只需将
HttpRequestMessage
传递给helper类并生成链接。请看我的答案。在这个例子中,返回null@Mehran将
Request
传递到
GenerateLink()
方法,如
HelperClass.GenerateLink(Request)
,这一点至关重要。否则,
HttpRequestMessage httpRequest
将在
GenerateLink()
method中为空。是的,我将请求传递到GenerateLink方法,就像HelperClass.GenerateLink(请求)一样,但HttpRequestMessage httpRequest是空的null@Mehran好,这是另一个问题,您必须发布一个新问题,显示您的代码结构,并询问为什么
Request
在控制器内为
null
。或者至少请更新您当前的问题并解决新问题。对于错误的答案,我深表歉意,控制器中的请求不为空!事实上,新的UrlHelper(httpRequest).Route(…)返回null在本例中为UrlHelper返回null@Mehran将
Request
传递到
GenerateLink()
方法,如
HelperClass.GenerateLink(Request)
,这一点至关重要。否则,
HttpRequestMessage httpRequest
将在
GenerateLink()
method中为空。是的,我将请求传递到GenerateLink方法,就像HelperClass.GenerateLink(请求)一样,但HttpRequestMessage httpRequest是空的null@Mehran好,这是另一个问题,您必须发布一个新问题,显示您的代码结构,并询问为什么
Request
在控制器内为
null
。或者至少请更新您当前的问题并解决新问题。对于错误的答案,我深表歉意,控制器中的请求不为空!事实上,新的UrlHelper(httpRequest).Route(…)返回null
public class DefaultController : ApiController
{
    [HttpGet]
    public string Default()
    {
        var link = HelperClass.GenerateLink(Request);
        return link;
    }
}