我有一个.PEM文件,其中包含用于SSL数据传输的公钥和私钥,如下所示:
-----BEGIN RSA PRIVATE KEY-----
private key data
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
public key data
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
当我想通过以下代码加载.PEM文件时:
X509Certificate2 xx = new X509Certificate2("c:\\myKey.pem");
Run Code Online (Sandbox Code Playgroud)
我得到一个例外,说:"找不到请求的对象." ,满堆栈:
System.Security.Cryptography.CryptographicException was unhandled
Message=Cannot find the requested object.
Source=mscorlib
StackTrace:
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(String fileName)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName)
at DLLTest.SSL_Test.test() in E:\Projects\DLLTest\DLLTest\SSL_Test.cs:line 165
at DLLTest.SSL_Test.Run() in E:\Projects\DLLTest\DLLTest\SSL_Test.cs:line 21
at DLLTest.Program.Main(String[] args) in E:\Projects\DLLTest\DLLTest\Program.cs:line 21
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, …
Run Code Online (Sandbox Code Playgroud) 在C++中,我打开了一个有一个的串口HANDLE
.由于端口可能被外部应用程序关闭,如何HANDLE
在读取数据之前验证它是否仍然有效?
我认为可以通过检查HANDLE
合适的API函数来完成,但是哪个?谢谢.
我的代码是这样的:
public class Program
{
[STAThread]
static void main()
{
DataAccessClass dal = new DataAccessClass();
List<Person> list = dal.GetPersons();
Person p = list[0];
p.LastName = "Changed!";
dal.Update(p);
}
}
public class DataAccessClass
{
public static List<Person> GetPersons()
{
MyDBEntities context = new MyDBEntities();
return context.Persons.ToList();
}
public void Update(Person p)
{
// what sould be written here?
}
}
Run Code Online (Sandbox Code Playgroud)
现在请告诉我应该在Update()方法中写什么?我写的一切,遇到各种例外.(请注意加载的数据是跟踪,连接或类似的)
我正在使用Windows CE 5.0的设备上开发应用程序.我需要更改操作系统,例如语言安装&...,似乎我需要一个名为Microsoft Platform Builder的IDE.但我怎么能得到它?有免费下载的免费版本吗?我用Google搜索网络,但什么也没得到!
NDC是NCR公司的ATM软件应用程序协议.任何人都可以告诉我如何获得NDC/NDC +/Advanced NDC的文档?因为我想基于它开发模拟器和应用程序(ATM和主机).
谢谢.
我有一个WSDL文件(Web服务由.NET编写),我可以通过其工具在IntelliJ IDEA 7.0.4中生成java web服务客户端代理类和代码.Web服务有一个soap请求标头,但我看不到自动生成的Java代理类和代码中的任何属性或方法来设置请求标头.(但是当我使用Visual Studio 2008为C#生成代理类时,在Web服务代理类中创建一个对象作为标题,因此我可以设置简单填充它)
我该怎么做Java?
在我的C#WinForms程序中,我有一个只有一个Button控件的表单.默认情况下,该Button控件接收窗体上的焦点.但我不希望Button能够获得焦点.
有没有一个解决方案,即使需要调用非托管API的解决方案?
在 C#.NET 中,我编写了以下简单的后台工作线程:
public class MyBackgrounder
{
public delegate void dlgAlert();
public dlgAlert Alert;
public event EventHandler eventAlert;
Thread trd;
public void Start()
{
if (trd == null || trd.ThreadState == ThreadState.Aborted)
{
trd = new Thread(new ThreadStart(Do));
}
trd.IsBackground = true;
trd.Priority = ThreadPriority.BelowNormal;
trd.Start();
}
void Do()
{
Thread.Sleep(3000);
Done();
}
void Done()
{
if (Alert != null)
Alert();
if (eventAlert != null)
eventAlert(this, new EventArgs());
Kill();
}
public void Kill()
{
if (trd != null)
trd.Abort();
trd …
Run Code Online (Sandbox Code Playgroud) 我有一个C++函数导出为api像这样:
#define WIN322_API __declspec(dllexport)
WIN322_API char* Test(LPSTR str);
WIN322_API char* Test(LPSTR str)
{
return "hello";
}
Run Code Online (Sandbox Code Playgroud)
该函数由.DEF文件正确导出为API,因为我可以在Dependency Walker工具中看到它.现在我有一个C#测试程序:
[DllImport("c:\\win322.dll")]
public static extern string Test([MarshalAs(UnmanagedType.LPStr)] String str);
private void Form1_Load(object sender, EventArgs e)
{
string _str = "0221";
Test(_str); // runtime error here!
}
Run Code Online (Sandbox Code Playgroud)
在调用Test()方法时我得到错误:
"调用PInvoke函数'MyClient!MyClient.Form1 :: Test'使堆栈失衡.这很可能是因为托管PInvoke签名与非托管目标签名不匹配.请检查PInvoke签名的调用约定和参数是否与目标非托管签名."
我尝试了很多其他数据类型和编组,但什么也没得到!请帮助我!
当我在 IE 中手动导入证书(工具/Internet 选项/内容/证书)时,我的 C#.NET SSL 连接有效,但是如何通过代码加载证书?这是我的代码:
TcpClient client = new TcpClient(ConfigManager.SSLSwitchIP, Convert.ToInt32(ConfigManager.SSLSwitchPort));
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null
);
sslStream.AuthenticateAsClient("Test");
Run Code Online (Sandbox Code Playgroud)
如果我在 Internet Explorer 中手动导入我的证书文件,上面的代码工作正常。但是,如果我从 IE 中删除我的证书并改用以下代码,则会出现身份验证异常:
sslStream.AuthenticateAsClient("Test", GetX509CertificateCollection(), SslProtocols.Default, false);
Run Code Online (Sandbox Code Playgroud)
这是“GetX509CertificateCollection”方法:
public static X509CertificateCollection GetX509CertificateCollection()
{
X509Certificate2 certificate1 = new X509Certificate2("c:\\ssl.txt");
X509CertificateCollection collection1 = new X509CertificateCollection();
collection1.Add(certificate1);
return collection1;
}
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能动态加载我的证书?
我有一个由C#.NET 4.0开发的两层Windows窗体应用程序.在此APP中,我读取文件内容并在Data-Access-Layer中创建实体列表,并将其返回到GUI层以在网格视图中显示.在我当前的逻辑中,如果文件中的一行已损坏或格式错误(我无法从中创建实体)或任何其他异常,我抛出异常并中止该过程.现在,我如何实现忽略/重试/取消模式?我的意思是什么是显示忽略/重试/取消对话框并执行任何用户想要的最佳方式(例如,忽略当前行并转到下一行,取消该过程,或重试当前失败的行读取)?它有什么模式吗?
在 C# 4.0 (Visual Studio 2010) 中,我有一个 Windows 窗体 DataGridView,它必须是多选的,并且它有一个指定的列,我不希望它的单元格是可选的。我该怎么办?
我有一个C#winapp.我从C#应用程序调用一个原生.dll文件(由我自己创建),它工作正常.
但是当我将我的应用程序(.exe和.dll文件)复制到另一台机器时,我收到一条错误消息:
无法加载DLL"c:\ dllname.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)
这是C#代码:
class IsoMessageHelper
{
public const string ISO8583_DLL = "c:\\Hc8583.dll";
[DllImport(ISO8583_DLL, CallingConvention = CallingConvention.Cdecl)]
public static extern bool InitializationRq(...)
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
c# ×7
.net ×3
winapi ×3
c++ ×2
ssl ×2
ado.net ×1
c ×1
cen-xfs ×1
certificate ×1
cryptography ×1
datagridview ×1
delegates ×1
dll ×1
financial ×1
handle ×1
header ×1
java ×1
pem ×1
pinvoke ×1
port ×1
private-key ×1
request ×1
soap ×1
windows-ce ×1
winforms ×1