Dav*_*usa 7 azure azure-web-roles webrole
我有一个方法(在一个单独的类库中),由WebRole和WorkerRole调用.此方法包含使用的文件路径Environment.GetEnvironmentVariable("RoleRoot"),如下所示:
private string FooPath()
{
string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
return Path.Combine(appRoot + @"\", @"approot\file.foo");
}
Run Code Online (Sandbox Code Playgroud)
当我从WorkerRole调用此方法时,路径将正常返回.但是当我从WebRole调用它时,我得到了null.
有任何想法吗?
编辑:我使用APNS-Sharp向iOS发送推送消息,它需要一个.p12证书才能工作.目前我在我的类库的根目录中有.p12(由WebRole和WorkerRole调用).但重点是:RoleRoot当我从WebRole调用它时为什么返回null但是当我从WorkerRole调用时返回路径?
Dav*_*usa 10
RoleRootWebRole返回false,因为WebRole使用IIS,就像普通网站一样.这就是为什么从WebRole获取环境变量很困难的原因.
为了正确获取路径,我不得不使用经典的Server.MapPath并引用该bin文件夹,而不是approot:
private string FooPathWebRole()
{
string appRoot = HttpContext.Current.Server.MapPath(@"~\");
return Path.Combine(appRoot + @"\", @"bin\file.foo");
}
Run Code Online (Sandbox Code Playgroud)
对于WorkerRole,没有任何改变:
private string FooPathWorkerRole()
{
string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
return Path.Combine(appRoot + @"\", @"approot\file.foo");
}
Run Code Online (Sandbox Code Playgroud)
此外,我发现Azure不会导入p12证书.我不得不将它转换成另一种格式,我认为这种格式对我不起作用.因此,最好的选择是将它们放在应用程序的根目录上,并将其Build Action标记为Content.
| 归档时间: |
|
| 查看次数: |
6110 次 |
| 最近记录: |