1

我不确定我是否正确地处理了这个问题。我有一个需要定期调用的 MVC 控制器操作。我正在尝试使用 Quartz.net 创建一个调度程序,然后我需要在我的工作人员中运行该调度程序。如何在我的工作角色中访问我的 MVC 控制器操作?

4

1 回答 1

1

您可以从辅助角色向操作的路由 URL 发出 HTTP 请求。

using (var httpClinet = new HttpClient())
{
    var result = httpClient.DownloadString("http://www.site.com/path/to/action");
}

更新

...我如何才能在工作人员角色中获取当前 url?因为 url 会根据它的部署位置而改变......

一种方法是将变量 URL 段存储在您的工作角色的ConfigurationSettings.

<Role name="My.WorkerRole">
    ...
    <ConfigurationSettings>
        <Setting name="UrlScheme" value="https" />
        <Setting name="UrlHost" value="www.site.com" />
        <Setting name="UrlPath" value="path/to/action?param1=value1" />
    </ConfigurationSettings>
    ...
</Role>

using (var httpClinet = new HttpClient())
{
    var url = string.Format("{0}://{1}/{2}",
        RoleEnvironment.GetConfigurationSettingValue("UrlScheme"),
        RoleEnvironment.GetConfigurationSettingValue("UrlHost"),
        RoleEnvironment.GetConfigurationSettingValue("UrlPath"));
    var result = httpClient.DownloadString(url);
}

ServiceConfiguration.Cloud.cscfg然后,您可以在部署之前更改文件中的值。

于 2013-10-07T11:13:02.163 回答