我在Azure上运行了一个Cloud Service,我正在尝试将Umbraco作为VirtualApplication添加到WebRole:
ServiceDefinition.csdef中:
...
<Site name="Web">
<VirtualApplication name="cms" physicalDirectory="../../../umbracocms" />
...
Run Code Online (Sandbox Code Playgroud)
它在模拟器上的本地计算机上运行完美,但是当我将程序包部署到Azure Cloud Service时,我无法访问Umbraco页面,它会返回以下错误:
Access to the path 'E:\sitesroot\1\config\applications.config' is denied.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access to the path 'E:\sitesroot\1\config\applications.config' is denied.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[UnauthorizedAccessException: Access to the path 'E:\sitesroot\1\config\applications.config' is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +216
System.IO.FileStream.Init(String path, FileMode mode, …Run Code Online (Sandbox Code Playgroud) 我将我的ASP.NET MVC应用程序托管为Azure云服务.
在新部署后,我在删除用户上传的图片时遇到问题.
上传的图片将保存到自定义特殊文件夹中 WebProject/UserFiles/MedicalCenterImages
下面我提供了我的项目文件夹结构.

我发现并调查了几个与我相关的问题
并且弄清楚,我应该在.csproj文件上添加一个SkipDelete规则.
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipUserFilesFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>UserFiles</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
但我不完全明白我应该编辑哪个文件?(MaxPatient.Web.csproj或MaxPatientCloudService.ccproj或任何其他文件)
我总是发布我的MaxPatientCloudService项目.
我将不胜感激任何帮助.
谢谢 :)
我有一个标准的Azure构建 - 一个Web角色,一个worker角色.在最近的合并之后,它确定角色无效.当我双击Web角色或辅助角色时,或者当我右键单击并选择"属性"时,我得到一个灰色屏幕,上面写着"无效的服务定义或服务配置.请参阅错误列表以获取更多详细信息".但是,错误列表中根本没有任何内容.
我已经交叉比较了Settings元素,并尝试评论csdef和cscfg文件的各个部分,但似乎没有任何东西可以恢复生命.我已经浪费了半天的时间.我的问题不在于"出了什么问题" - 更像是,在没有给出任何信息的情况下,你应该如何在地球上找出错误是什么,并且连续消隐代码会产生全面的空白?
我正在尝试通过API将诊断扩展安装到现有的Azure云服务中.Cloud Service已分配保留的IP.在使用ChangeConfigurationBySlot执行此操作时,我收到" 在部署更新或升级期间无法添加,删除或更改保留的IP ".有谁知道让这个工作的诀窍?这是API中的错过还是我做错了什么?
这是相关的代码段:
var dep = client.Deployments.GetBySlot(resource.ServiceName, DeploymentSlot.Production);
var serviceConfig = XElement.Parse(dep.Configuration, LoadOptions.SetBaseUri);
var config = new DeploymentChangeConfigurationParameters(serviceConfig.ToString())
{
ExtendedProperties = dep.ExtendedProperties,
Mode = DeploymentChangeConfigurationMode.Auto,
TreatWarningsAsError = false,
Configuration = serviceConfig.ToString(),
ExtensionConfiguration = new ExtensionConfiguration
{
AllRoles = new List<ExtensionConfiguration.Extension>(),
NamedRoles = extensionConfig
}
};
var result = client.Deployments.ChangeConfigurationBySlot(resource.ServiceName, DeploymentSlot.Production, config);
Run Code Online (Sandbox Code Playgroud)
以下是云服务配置的相关部分
<ServiceConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" serviceName="IS.Admin.Azure" osFamily="4" osVersion="*" schemaVersion="2014-06.2.4" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="IS.Admin">
…
</Role>
<NetworkConfiguration>
<VirtualNetworkSite name="is-prod" />
<AddressAssignments>
<InstanceAddress roleName="IS.Admin">
<Subnets>
<Subnet name="Subnet-1" …Run Code Online (Sandbox Code Playgroud) azure azure-cloud-services azure-management azure-management-api
我有一个云服务,里面有两个虚拟机.我正在尝试按照本文中列出的步骤来保留我的云服务的IP地址.
Login-AzureRmAccount -TenantId <my tenant id>
Set-AzureRmContext -SubscriptionId <my subscription id>
New-AzureReservedIP -ReservedIPName myname -Location "Central US" -ServiceName mycloudservicename
Run Code Online (Sandbox Code Playgroud)
我总是得到这个错误:
New-AzureReservedIP:ResourceNotFound:未找到任何部署.
VM是在新门户中创建的,但是是经典模式.我不确定这是不是我的问题.我尝试过其他cmdlet组合来添加帐户或设置订阅但没有任何帮助.
有任何想法吗?
我使用Asp.net Web Api 2构建了一组3个API,使用Azure云服务工作者角色中的OWIN自托管.工作者角色通过自定义域公开到Internet.
每个API都有一个控制器,执行一些正常的字典操作,表调用和Azure Redis调用.2个请求只需执行一次Redis呼叫,并在大约10ms内返回.通过所有API代码时的平均调用是150ms.答案是一个大小约为10k的JSON对象.
一切正常,但我有问题.
我在周围每秒25峰连接和每天不超过2万个请求,我勉强可以得到下面的CPU 40%与3天青D2_V2(2个芯,8GB RAM)情况下运行.我遇到了麻烦,因为我每个月花费近1.5k美元用于每秒15-25次呼叫的Api.如果我删除或缩小实例,CPU上升到55-60%, Redis和Azure表调用减慢很多,API请求需要3-5秒才能恢复.
我尽我所能尝试了一切,我认为可能是一些机器人或DDos攻击,所以我安装了nuget包WebApi Throttle,每个IP每秒最多设置1个请求.没有改变.
我查看了所有代码配置,以削减未经优化的部分,但1次调用只是调用redis并返回,其他非常干净和简单C#返回150ms,有2个azure表调用+ 1个azure队列集.
该API控制器是异步,一切都是异步.
我启用了Profiling,CPU在主要的azure进程中很高,而Redis Get方法,这里没有任何其他相关内容,没有瓶颈.我启用了诊断,没有错误.
我安装了Application Insights,在这里我看到一些奇怪的东西无法判断它是否正常.
我看到这个IP:13.88.23.0使用通常在正常请求中使用的查询字符串值向API 发出数千个请求.其中很多都失败了.这个IP本身就是Azure,为什么要调用Api?其中一些请求停留了几分钟,我可以从Application insights面板看到,它始终是相同的IP.
然后我看到剩下的日志,依赖项等,没有任何相关性.
除此之外,我该怎么做才能理解这个问题? 我不能认为每天只有200万次呼叫消耗如此多的CPU资源是否正常?
我可以使用其他分析技术吗?
根据您的经验,在正常情况下,我应该为3个双核8GB RAM服务器提供多少API调用?(假设我的配置有问题)
谢谢
UPDATE
我在两个云服务中分离了API,2合1和1.我仍然在另一个属于Microsoft的IP的Application Insights调用中看到.我认为这是正常的,可能是应用程序洞察无法检测到客户端的真实IP,因为它是一个工作者角色并显示内部角色.
但是,为这么少的电话使用这么多电力的问题仍然存在.有什么想法吗?
azure-worker-roles asp.net-web-api2 azure-cloud-services azure-application-insights
我们正在使用Cloud Service配置来存储应用程序设置。但是,我们希望保护一些应用程序设置,例如用户凭据,数据库连接字符串等。推荐的设置方法是什么?
我们正在从Web角色和辅助角色中读取此配置。因此,不能选择使用aspnet_regiis实用程序,因为该角色在工作角色中不可用,因为未在工作角色中安装iis。
我们也考虑过使用Key Vault,但是最终会遇到保护Key Vault密钥的情况。
不幸的是,Azure云服务不支持托管服务身份
我想在Azure云服务工作者角色中托管嵌入式FTP服务器.
要提供对FTP服务器的被动访问,它使用端口范围20000-21000.ServiceDefinition.csdef我在里面定义了所有需要的端口(见截图).
主要问题是港口数量巨大.如果我尝试将服务上传到云端,则会出现以下错误.
验证错误:输入端点数无效 - 当前1002,最大值 25
如何通过云服务实现这项工作?
我对532和533考试中的一些问题感到惊讶,这些问题或多或少让我想起了确切的信息,即Cloud Services的配置文件中包含哪些设置。我认为,从根本上来说,如果没有文档在我面前,这是很难分辨的。
例如:在.csdef文件中定义缩放给定角色的实例数,但在.cscfg中定义角色的实例大小。对我而言,为什么一个与另一个相对合适并不明显。
任何人都有任何有用的技巧来记住/回忆往哪里去?
我制作了一个 Azure 云服务,您可以在其中使用 Blob 将文件上传和删除到云存储。我成功地写了一个方法,你可以从云服务中删除上传的 blob:
public string DeleteImage(string Name)
{
Uri uri = new Uri(Name);
string filename = System.IO.Path.GetFileName(uri.LocalPath);
CloudBlobContainer blobContainer = _blobStorageService.GetCloudBlobContainer();
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(filename);
blob.Delete();
return "File Deleted";
}
}
Run Code Online (Sandbox Code Playgroud)
这也是使用 HTML 进行查看的代码:
@{
ViewBag.Title = "Upload";
}
<h2>Upload Image</h2>
<p>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype =
"multipart/form-data" }))
{
<input type="file" name="image"/>
<input type="submit" value="upload" />
}
</p>
<ul style="list-style-position:Outside;padding:0;">
@foreach (var item in Model)
{
<li>
<img src="@item" alt="image here" width="100" height="100" …Run Code Online (Sandbox Code Playgroud)