Development Fabric中的Azure服务SSL出错

Lar*_*ann 9 azure azure-web-roles visual-studio-2012 azure-sdk-.net

我遇到了让SSL在Development Fabric中工作的问题.我正在使用Visual Studio 2012 Ultimate和2012年10月的Azure SDK for .NET运行Windows 8 Pro的全新安装.IIS8没有安装,只有IIS Express,它声称支持HTTPS所以我希望这不是问题.

以管理员身份运行VS 12,我创建了一个空白的VS解决方案,添加了一个新的(.NET 4.5)云服务和一个新的ASP.NET MVC 4 Internet Web应用程序项目,并点击了F5.一切正常.然后,当我向Web角色添加SSL证书并将HTTP端点(端口80)替换为HTTPS端点(端口443,带有证书)时,按F5会产生以下错误消息:

适用于Microsoft Visual Studio的Windows Azure工具

将调试器附加到角色实例'deployment18(32).WindowsAzureCloudService.Mvc4WebRole_IN_0',进程ID为:4892'时出错.无法附加.访问被拒绝.

注意,最后一部分("访问被拒绝")有几种变体,特别令人愉快的是"灾难性的失败".:)

VS Output窗口中的唯一消息('General'输出)是:

Windows Azure工具:警告:在角色"Mvc4WebRole"中将专用端口443重新映射到444,以避免在仿真期间发生冲突.

Compute Emulator UI没有多大帮助; 就在实例消失之前,这是我得到的唯一控制台输出(有时会出现其他消息,但偶尔每隔几次运行;我不知道如何捕获这些):

[fabric]角色实例:deployment18(33).WindowsAzureCloudService.Mvc4WebRole.0

[fabric]角色状态未知

[fabric]角色状态暂停

[面料]角色状态忙

[面料]角色状态不健康

[fabric]角色状态已停止

证书是从CA获得的,并且作为带有私钥,扩展属性的.pfx正确导入到本地计算机/个人/证书存储中,并标记为可导出,以获得它的价值.

当我尝试将服务发布到Azure时,我得到一个关于数据库连接字符串的构建(验证)警告(我认为这是不相关的):

连接字符串'DefaultConnection'在项目'Mvc4WebRole'中使用本地数据库'(LocalDb)\ v11.0'.在Windows Azure中运行此应用程序时,此连接字符串将不起作用.要访问其他数据库,您应该更新web.config文件中的连接字符串.

可能更重要的是,部署实际上在Windows Azure活动日志窗口中失败并显示以下历史记录:

上午9:00:25 - 警告:有包验证警告.

上午9点○○分25秒 - 对于WindowsAzureCloudService准备部署 - 2013年1月3日上午8点59分55秒与订阅ID"<...>"使用服务管理URL"https://management.core.windows.net/ " ...

上午9:00:25 - 连接...

9:00:26 AM - 对象引用未设置为对象的实例.

上午9:00:26 - 部署失败并出现致命错误

有人可以帮我解决这个问题吗?我重新启动了几次.;)

提前致谢!

编辑(1月3日,下午4:44):我有一些想法可以帮助我取得进步,但有些想法非常激烈,所以任何建议都会受到赞赏:

  • 有没有办法将Compute Emulator(Dev Fabric)的所有输出捕获到日志文件中,以便我可以查看它?(来自我的服务的System.Diagnostic.Trace调用无济于事,因为在使用HTTPS时我甚至没有达到RoleEntryPoint!) 我想出来了; 看下一个编辑.
  • Azure部署期间的空指针异常令我担心.是否值得尝试重新安装Azure SDK,如果是这样,我该如何进行干净安装呢?
  • 当切换到使用完整的IIS作为模拟器时,有没有人看到这种问题消失了?(这似乎不太可能,因为IIS与IIS Express应该与Azure部署无关.)

编辑(1月4日,上午10:15):坏消息:我尝试了建议授予对证书的读取权限,但在我的情况下没有帮助.好消息:我设法在关闭之前在Compute Emulator UI中捕获其中一条偶发消息; 这是一些诊断的一些信息.它本身没有帮助,但它揭示了Development Fabric存储其临时文件的位置:

[诊断]信息:C:\用户\拉尔斯\应用程序数据\本地\ dftmp \资源\ 0005155d-4592-40f4-812e-18793b26576c \目录\ DiagnosticStore \监视器

为每个部署重新创建GUID部分,并在部署消失时将其删除(就像我的情况一样).但是在父目录('dftmp')中,有一些有用的目录,然后我在新部署期间监视:DevFCLogs,DFAgentLogs和IISConfiguratorLogs.我猜这回答了我昨天遇到的第一个问题!:)

DFAgentLogs\DFAgent.log:(41KB)没有有用的信息.一堆"无法读取管道"消息和获取角色/部署实例ID的失败,我认为这只是噪音.

DevFCLogs\DevFabric - 2013.01.04 - <...>.log:(510 KB)没有用处.我浏览了文件并搜索了"错误","失败","未找到","证书"和"Mvc4WebRole_IN_0"; 没有一个显示任何正在发生的事情.

IISConfiguratorLogs\IISConfigurator.log:(6 KB)现在我们正在取得进展!:)有人能告诉我这意味着什么吗?(与此同时,我正在寻找ILSpy-hunting ......有趣的...)

IISConfigurator信息:0:[00006356:00000005,2013/01/04 16:07:08.915]使用IIS Express appdomain

(......)

IISConfigurator信息0:[00006356:00000005,2013年1月16:07:08.936]添加结合127.255.0.0:444:现场deployment18(40).WindowsAzureCloudService.Mvc4WebRole_IN_0_Web

IISConfigurator信息:0:[00006356:00000005,2013/01/04 16:07:10.484]捕获异常

IISConfigurator信息0:[00006356:00000005,2013年1月16:07:10.487]异常信息:System.Runtime.InteropServices.COMException(0x800401F3):无效类字符串(从HRESULT异常:0x800401F3(CO_E_CLASSSTRING))

服务器堆栈跟踪:

在Microsoft.Web.Administration.Interop.IAppHostProperty.get_Value()

在Microsoft.Web.Administration.ConfigurationElement.GetPropertyValue(IAppHostProperty属性)

在Microsoft.Web.Administration.Binding.get_CertificateHash()

在Microsoft.Web.Administration.BindingCollection.Add(绑定绑定)

在Microsoft.WindowsAzure.ServiceRuntime.IISConfigurator.WasManager.DeploySite(String roleId,WASite roleSite,String appPoolName,String sitePath,String iisLogsRootFolder,String failedRequestLogsRootFolder,List 1 bindings, List1协议,FileManager fileManager,WAAppPool defaultAppPoolSettings,String roleGuid,String&appPoolSid,List`1 appPoolsAdded,String configPath)

编辑(1月4日,上午11点): ILSpy没有多大帮助; 在尝试获取证书的哈希值以设置绑定时,异常被抛出在互操作点(我们已经知道)(我们也知道).有谁知道需要注册什么COM对象才能获得Microsoft.Web.Administration中绑定的证书哈希?或者我如何拦截互操作电话来查找?如果你能告诉我为什么会发生这种情况,那么奖励积分.:)

Juh*_*äki 12

我在两台电脑上遇到过类似的问题.在这两种情况下安装IIS解决了这个问题.

似乎只需安装IIS(通过添加/删除Windows组件)就足够了.您不需要开始使用它.安装发生了变化,之后我的IIS Express开始使用Visual Studio中的HTTPS再次运行.

有关MSDN Social上类似问题的讨论:http: //social.msdn.microsoft.com/Forums/nl-NL/windowsazuredevelopment/thread/ad362016-16f6-459a-8022-9307aa5f910e 此问题也在Microsoft连接:https: //connect.microsoft.com/VisualStudio/feedback/details/758533

在我的情况下,日志文件中的错误是:

IISConfigurator信息:0:[00007644:00000007,2013.01.17 00:39:18.523]异常:System.Runtime.InteropServices.COMException(0x800401F3):无效的类字符串(来自HRESULT的异常:0x800401F3(CO_E_CLASSSTRING))

我从C:\ Users \\ AppData\Local\dftmp\IISConfiguratorLogs目录中找到了日志文件.


vip*_*naz 11

当使用SSL的私钥证书在本地运行时,您需要为用户提供在访问私钥的情况下运行的模拟器应用程序.打开mmc.exe并添加证书>>本地计算机管理单元以查看您的证书.右键单击证书,然后单击All Tasks >> Manage Private Keys - 然后添加至少具有读访问权限的IUSR和网络服务.

要部署到azure,您需要将证书上载到Cloud Service并确保证书对域有效.

按照步骤11从http://www.microsoft.com/en-us/download/details.aspx?id=35448开始.从这篇SO帖子