我正在尝试Windows 8.1和Windows Phone 8.1的新功能,即证书存储和在服务器端使用客户端证书进行客户端身份验证的可能性.但是我遇到了这个功能的问题.
我有一个基本测试的WCF服务,它运行在IIS Express上.IIS express配置为支持SSL和客户端证书.在IIS(configurationhost.config)的配置文件中,我设置了这个:
<access sslFlags="SslRequireCert" /> (tried also SslNegotiateCert)
<clientCertificateMappingAuthentication enabled="true" />
Run Code Online (Sandbox Code Playgroud)
我在Windows RT应用程序中添加了客户端证书,如下所示:
//Install the self signed client cert to the user certificate store
string CACertificate = null;
try
{
Uri uri = new Uri("ms-appx:///Assets/AdventureWorksTestClient1.pfx");
var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
IBuffer buffer = await FileIO.ReadBufferAsync(file);
using (DataReader dataReader = DataReader.FromBuffer(buffer))
{
byte[] bytes = new byte[buffer.Length];
dataReader.ReadBytes(bytes);
// convert to Base64 for using with ImportPfx
CACertificate = System.Convert.ToBase64String(bytes);
}
await CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync(
CACertificate,
"", …Run Code Online (Sandbox Code Playgroud) c# client-certificates windows-runtime windows-8.1 windows-phone-8.1
我的代码枚举了一个元文件:
private void Parse()
{
Graphics graphics = Graphics.FromHwnd(IntPtr.Zero);
PointF pointf = new PointF();
graphics.EnumerateMetafile(_metafile, pointf, ParseCallback);
}
private bool ParseCallback(EmfPlusRecordType recordType,
int flags, int dataSize, IntPtr data, PlayRecordCallback callbackData)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我的开发机器是VirtualBoxUbuntu主机上的Windows 7 客户机.
用来工作正常的代码.但是,当我关闭Aero时,代码停止工作:ParseCallback永远不会被调用.
只有当我重新打开Aero时,ParseCallback才会再次执行.
为什么以及如何使此代码在非启用Aero的计算机上运行?
与WCF Self Hosting相似.
有没有办法在控制台应用程序中创建一个"自托管"的网站dll?
可能是提出这个问题的错误方式,但我想做的是使用这个网站将结果分成网页,而不在其中创建网站IIS.
谢谢.