- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我最近升级到了 Azure 2.1 SDK,现在我的 web.config
的一部分遇到了问题。在计算模拟器上运行时处于 Web 角色中。我的web.config
包含这个:
<location path="api">
<system.webServer>
<security>
<access sslFlags="Ssl, SslRequireCert, SslNegotiateCert" />
</security>
</system.webServer>
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
我需要这个,因为 /api/
下的所有内容path 要求客户端通过 HTTPS 提供客户端证书来进行身份验证。
默认情况下,IIS 配置为不允许您执行此操作 - <access>
system.webServer/security
下的元素默认情况下处于锁定状态。所以我总是有一个包含以下内容的启动任务:
SET APPCMD=%windir%\system32\inetsrv\appcmd.exe
IF EXIST APPCMD GOTO :INUSUALPLACE
SET APPCMD="%ProgramFiles%\IIS Express\appcmd.exe"
:INUSUALPLACE
%APPCMD% unlock config /section:system.webServer/security/access
如果没有这个,您将收到 500.19 错误。直到最近,此启动任务始终成功地阻止了该错误,使我的 SSL 配置能够正常工作。
但它不再工作了,据我所知,这是在我切换到 2.1 SDK 时发生的。顺便说一句,此 Web 角色中的其他所有内容都有效 - 仅当我尝试访问 /api/
下的服务时才有效。我收到错误的 SSL 配置设置所应用的路径。这是500.19。 (500 当然是“内部服务器错误”,但 .19 表示这是一个配置错误。)
据我所知,发生这种情况是因为解锁此配置部分的尝试不再起作用。我这么说的原因是,如果我找到 applicationHost.config
Azure 模拟器创建的文件(在 C:\Users\<user>\AppData\Local\dftmp\Resources\<some random guid>\temp\temp\RoleTemp
中),我手动编辑它,替换 Deny
对于security
具有 Allow
的元素,我不再收到错误,并且可以成功使用需要客户端证书的服务。
这当然没有用作为解决方法 - 这个 applicationHost.config
每次在模拟器中运行应用程序时都会重新生成(并且确切位置每次都会更改)。每次在本地调试应用程序时,我都需要某种方法来可靠地自动解锁此配置部分。这就是appcmd.exe
应该可以,但它似乎已停止工作。
我确实想到问题可能是它正在获取 appcmd.exe
的 IIS 版本,尽管 Azure SDK 现在使用 IIS Express。我不确定它们是否是不同的程序,所以我尝试在启动命令末尾添加以下内容:
"%ProgramFiles%\IIS Express\appcmd.exe" unlock config /section:system.webServer/security/access
这会显式运行 IIS Express 副本。不过好像没什么区别。
在有人询问之前,启动任务肯定正在运行。在与 applicationHost.config
相同的文件夹中,我看到一个WaHostBootstrapper.log
文件,它包含(除其他外)以下几行:
[00025156:00018324, 2013/08/30, 22:15:03.033, INFO ] Executing Startup Task type=0 rolemodule=(null) cmd="c:\dev\mm\DevInt\src\Mm.Cloud\csx\Debug\roles\Mm.Web\approot\bin\Startup\EnableClientCerts.cmd"
[00025156:00018324, 2013/08/30, 22:15:03.034, INFO ] Executing "c:\dev\mm\DevInt\src\Mm.Cloud\csx\Debug\roles\Mm.Web\approot\bin\Startup\EnableClientCerts.cmd" .
[00025156:00018324, 2013/08/30, 22:15:03.221, INFO ] Program "c:\dev\mm\DevInt\src\Mm.Cloud\csx\Debug\roles\Mm.Web\approot\bin\Startup\EnableClientCerts.cmd" exited with 0. Working Directory = c:\dev\mm\DevInt\src\Mm.Cloud\csx\Debug\roles\Mm.Web\approot\bin
这表明我的EnableClientCerts.cmd
(调用 appcmd.exe
的脚本)运行没有错误。
我不太清楚如何 appcmd.exe
知道它应该配置哪个特定网站。有几个 - 我在这个盒子上安装了适当的 IIS,并且还配置了一个与 Azure 无关的 IIS Express 站点。是否有可能无法配置正确的目标?
此外,我在 WaHostBootstrapper.log
中看到了一些此类错误。 :
[00025156:00018324, 2013/08/30, 22:15:03.033, ERROR] <- WapGetEnvironmentVariable=0x800700cb
这可能有关联吗?
我的解锁配置部分的脚本中是否缺少某些内容?
最佳答案
事实证明,当模拟器启动启动任务时,它已经设置了APPCMD
变量。此外,它设置的不仅仅是引用AppCmd.exe
,它还包括一个指向正确配置文件的命令行开关:
“C:\Program Files\IIS Express\appcmd.exe”/apphostconfig:“C:\Users\Ian\AppData\Local\dftmp\Resources\1217ef49-a59a-4e18-8ebc-27d06a78cbd5\temp\temp\RoleTemp\applicationHost.config"
因此,如果启动脚本仅使用 %APPCMD%
而不首先尝试设置它,它将应用于正确的实例。我的脚本无法正常工作,因为它自行决定了 AppCmd.exe 的位置,并且最终会修改 IIS 或 IIS Express 的全局设置,这两者似乎都不会对Azure 模拟器托管的 IIS 实例。 (我猜测这是最近的行为变化,可能与 Azure SDK 2.1 中支持非提升开发的新功能有关。)
令我担心的是,我找不到任何提及此预定义 APPCMD
变量的文档。我只是通过将以下内容添加到我的启动命令脚本中才发现它:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "gci env: | format-list" > c:\temp\env.log
我临时添加了该内容并运行了 Web 角色,它提供了所有环境变量的完整转储。查看该列表,APPCMD
变量是唯一包含目标正确配置所需信息的变量。但启动任务的文档似乎建议直接指向 AppCmd.exe
的 IIS 副本 - Use AppCmd.exe to Configure IIS at Startup文章只是硬编码了路径。我想如果我在模拟器中启用完整的 IIS,就会起作用,但我真的不想这样做。
因此,虽然这个解决方案有效(并且考虑到启动任务环境中的情况,似乎是唯一可行的解决方案),但它让我感到紧张,因为它是一个未记录的功能。因此,如果您偶然发现这个答案,请务必小心 - 它可能不可靠。
关于asp.net - 为什么 appcmd.exe 解锁配置在 Azure 模拟器上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18541845/
我注意到,当我打开我的应用程序并等待足够长的时间让我的手机自行锁定时,当我解锁它时,当前内容 View 未处于全屏模式。它不显示顶部栏,而是全黑线...如果我去另一个 Activity 并返回它再次修
我必须处理设计限制(依赖性问题)以不对互斥体使用范围保护。 示例代码: template class Test { MutexType myMutex; public: void f(
我正在尝试像这样使 my_class 线程安全。 class my_class { const std::vector& get_data() const { //lock so that
我想让手机在手机被锁定(锁定 = 键盘被锁定)并且用户想要解锁时询问一个问题(来自数据库)。如果答案正确,则手机解锁,否则手机会询问另一个问题。 我不知道如何检测解锁并在需要时解锁/锁定手机。 请帮帮
我有一个对 accept() 的阻塞调用。我从另一个线程关闭套接字,希望它能解除对 accept() 调用的阻塞,它确实如此,但我有一个情况,它没有:例如线程A进入accept(),线程B关闭sock
我在 C# 中有一个可以从多个线程调用多次的函数,我希望它只执行一次,所以我想到了这个: class MyClass { bool done = false; public void
锁定数据库的一个表 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别
我已经使用腻子在我的 ec2 实例上安装了 jenkins,从我的 Windows 系统 当我尝试通过网络访问 jenkins 时,我使用/var/lib/jenkins/secrets/initia
每次我打开我的电脑并尝试连接到 HR 数据库时,都会弹出一个错误提示被阻止,然后我转到 SQLPLUS 并以 SYSDBA 身份登录,并执行以下脚本: 我的问题是,我是否总是必须这样做?有什么办法让它
所以我的手机在引导加载程序中,我想解锁它 所以我输入 fastboot oem unlock 我明白了 D:\Minimal ADB and Fastboot>fastboot oem unlock
在我的应用程序中,我希望即使在应用程序终止后我的应用程序仍处于事件状态。我希望当“滑动解锁”我的应用程序启动时。 有可能吗?我怎样才能在不越狱的情况下做到这一点...... 这是为用户提供便利的功能。
即使我的 iPhone 使用电缆连接并解锁,它也会显示警告“Xcode 9.3 无法在 iPhone 上启动应用程序,因为设备已锁定”。我不知道该怎么办?有人对此有适当的解决方案吗?请 最佳答案 只需
我看到一个非常奇怪的行为,我试图了解它是否是这样设计的,或者只是没有从我的应用程序中正确处理。 我的应用程序以 UIAlertViews 的形式发送推送通知。当设备未锁定时,UIAlertViews
该文档说,从一个线程进行锁定并从另一个rwlock进行解锁会导致未定义的行为。我有一个数组和两个线程,一个分配它,一个释放它,这是一个周期发生的,也有一些线程在其中进行读/写操作,但是它们从不重叠,因
解锁 Oracle 表有哪些不同的技术? 我尝试过的。 获取锁定表的对象ID: SELECT object_id FROM dba_objects WHERE object_name='YOUR TA
我运行@apxchpwd.sql并用这个脚本给帐户倒霉 alter session set current_schema = APEX_050100; declare l_workspace_id
我想在 Chrome 扩展程序中提供一些高级功能。这个想法是,只要用户通过 PayPal 捐赠了一定金额,就可以使用后者的附加功能。 目前我的策略是这样的: 1/。用户填写 PayPal 表格。 2/
我构建了一个包含 IAP(应用内购买)的应用。该应用程序是使用 UINavigationController 构建的。当用户决定购买内容时,解锁功能会解锁该内容。然后,用户点击后退按钮,他们将返回主菜
我有一个只能通过静态方法从外部访问的类。然后,这些静态方法创建该类的一个对象以在该方法中使用,然后它们返回并且该对象可能被销毁。该类是几个配置文件的 getter/setter,现在我需要在对配置文件
我可以在超出 scoped_lock 范围之前解锁互斥锁吗?我怎么能那样做? {boost::mutex::scoped_lock lock(mutex); if(conditionaA) {
我是一名优秀的程序员,十分优秀!