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