C# 这是从后台工作程序命中asp.net webapi 2端点的最干净的方法吗?

C# 这是从后台工作程序命中asp.net webapi 2端点的最干净的方法吗?,c#,asp.net,asp.net-mvc,asp.net-web-api,hangfire,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,Hangfire,摘要: 我习惯于在设定的时间间隔处理运行的后台作业,比如每晚检查过期的小部件。我想知道从正在运行的作业中访问ASP.NET Web Api 2端点(可能只是获取和发布)的最佳方法 stuff的版本(如果这很重要) .NET 4.5 MVC 5 Web Api 2(.1?) 托管站点Windows azure 8GB RAM见脚注(1) 使用IIS express的本地开发人员(或VS2013中的内置开发人员) 我的具体问题 这个实现是从后台任务之类的东西打开/关闭与我的api的连接的正确方法

摘要:

我习惯于在设定的时间间隔处理运行的后台作业,比如每晚检查过期的小部件。我想知道从正在运行的作业中访问ASP.NET Web Api 2端点(可能只是获取和发布)的最佳方法

stuff的版本(如果这很重要)

  • .NET 4.5 MVC 5
  • Web Api 2(.1?)
  • 托管站点Windows azure
  • 8GB RAM见脚注(1)
  • 使用IIS express的本地开发人员(或VS2013中的内置开发人员)
我的具体问题

  • 这个实现是从后台任务之类的东西打开/关闭与我的api的连接的正确方法吗
  • 在下面的代码中,如何动态获取client.BaseAddress字符串()?如果能够像我在第二个psuedo代码片段中所做的那样,这将是非常方便的
  • 这是我从你那里得到的密码

    我想这已经相当清楚了,但我对使用HttpClient类缺乏经验,而且我的大多数api交互都来自javascript

    获取HttpClient.BaseAddress字符串需要做什么

    if(IAmRunningThisOnMyLocalMachine) {
        baseAddress = "http://localhost:1337/"
    } else {
        //I Already have a way to determine if I am on the staging server or live site
        if(IsStagingServer){
            // staging server base address
            baseAddress = "http://staging.whatever.com/"
        } else {
            // live base address
            baseAddress = "http://whatever.com/"
        }
    }
    
    对于root-else分支来说,这没什么大不了的,这些字符串或多或少都是常量。当我在本地运行时,尽管我希望它能够工作,但不管我是localhost:AnyPort还是IIS Express的任何其他变体



    他说:我只是在开公羊的玩笑,我只是想看看我能不能把“wtf”这个字读出来。如果成功,请告知

    您如何处理每个环境(开发、登台、生产)的其他不同设置?是否使用
    web.config
    转换?您可以使用此方法调用api:,然后根据要访问的url使用不同的端点名称。@odinserf-我没有使用配置转换。我可能应该这样做,但我以前从未使用过它们,我简短的谷歌搜索也没有出现任何我大脑想要搜索的演练:)。转移到转换是在候选名单上,因为现在我使用的是一个涉及此问题所讨论内容的黑客解决方案:
    if(IAmRunningThisOnMyLocalMachine) {
        baseAddress = "http://localhost:1337/"
    } else {
        //I Already have a way to determine if I am on the staging server or live site
        if(IsStagingServer){
            // staging server base address
            baseAddress = "http://staging.whatever.com/"
        } else {
            // live base address
            baseAddress = "http://whatever.com/"
        }
    }