Asp.net web api 在WebAPI中调用内部(端点)函数

Asp.net web api 在WebAPI中调用内部(端点)函数,asp.net-web-api,model-view-controller,httpclient,Asp.net Web Api,Model View Controller,Httpclient,我使用Hangfire在web API中执行重复作业,并在RoutineMethod函数中使用System.web.HttpContext.Current.Server.MapPath 但问题是它抛出对象null异常。 我搜索了这个问题,发现重复作业不使用http线程,而是使用后台线程 现在要解决这个问题,我需要使用httpclient调用我的内部端点 但要做到这一点,我需要给出Web API的URL来生成URI。那么,有没有其他方法可以使用httpclient调用内部函数呢 我当前的代码: p

我使用Hangfire在web API中执行重复作业,并在RoutineMethod函数中使用System.web.HttpContext.Current.Server.MapPath

但问题是它抛出对象null异常。 我搜索了这个问题,发现重复作业不使用http线程,而是使用后台线程

现在要解决这个问题,我需要使用httpclient调用我的内部端点

但要做到这一点,我需要给出Web API的URL来生成URI。那么,有没有其他方法可以使用httpclient调用内部函数呢

我当前的代码:

public static async Task<IHttpActionResult> RoutineTask()
        {
            //It was like this before.
            //await new DemoController().RoutineMethod();
            //await new DemoController().RoutineMethod2();

            //I am planning to do this.
            using (var client = new HttpClient())
            {
                //But I need to give URI which I don't think is a good idea.
                var uri = new Uri("http://localhost/DemoApp/api/DemoController/RoutineMethod");
                await client.GetAsync(uri);

            }

            return new DemoController().Ok();
        }

简短的回答是否定的。顾名思义,HttpClient需要http连接

在配置文件中存储服务连接信息没有任何问题


然而,要扩展Nkosi的评论,似乎因为您的代码可以创建DemoController的实例,所以它必须引用该控制器的项目,甚至必须位于同一项目中。我会将感兴趣的代码提取到一个库或服务中,所有需要信息的区域都可以引用。

或者公开该端点在一个服务API中所做的事情,分配的端点和作业都可以调用该API,因为该API可能在同一个代码库中。这似乎是一个问题。对不起,我还是不明白该怎么办。你能详细说明一下吗?问题中描述的每个方法都在同一控制器中。我认为问题是关于解决方案而不是问题,因此我问了其他问题我是否应该删除此问题?