【发布时间】:2017-05-24 17:08:43
【问题描述】:
我有一些奇怪的问题。我认为我正确地遵循了文档,但我的代码不起作用。我有这个非常简单的硬编码测试(NUnit):
[TestFixture]
public class MQQueueTests {
public const string MessageContent = "<test>This is test message</test>";
public static void Main(string[] args) {
var tests = new MQQueueTests();
tests.PutAndGetMessage();
}
[Test]
public void PutAndGetMessage() {
var properties = new Hashtable
{
{MQC.HOST_NAME_PROPERTY, "TestServer"},
{MQC.CHANNEL_PROPERTY, "Test.Channel"},
{MQC.PORT_PROPERTY, 1415},
// Is this correct? It looks like it is not
// enough because adding this line didn't solve
// the problem.
{MQC.CCSID_PROPERTY, 437}
};
using (var manager = new MQQueueManager("Test.Queue.Manager", properties)) {
using (MQQueue queue = manager.AccessQueue("Test.Queue",
MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_AS_Q_DEF)) {
MQMessage message = new MQMessage();
message.WriteUTF(MessageContent);
queue.Put(message);
MQMessage readMessage = new MQMessage();
queue.Get(readMessage);
Assert.AreEqual(MessageContent, readMessage.ReadUTF());
queue.Close();
}
manager.Disconnect();
}
}
}
我正在从控制台或通过 Resharper 6 测试运行程序运行测试应用程序。如果我在测试运行器中运行应用程序,我总是会遇到以下异常:
IBM.WMQ.MQException : MQRC_CHANNEL_CONFIG_ERROR(原因码是 2539)
异常由MQQueueManager.Connect(由其构造函数调用)引发。
如果我检查 MQ 日志,我会看到:
AMQ9541:不支持为数据转换提供的 CCSID。
解释:程序结束,因为源 CCSID '437' 或目标 CCSID '852' 无效,或当前不受支持。
操作:更正无效的 CCSID,或确保 可以支持请求的 CCSID。
如果我从控制台运行应用程序,我会遇到同样的错误,但如果我通过调用更改控制台的代码页
chcp 437
我的测试应用程序有效。如何从代码配置代码页?
【问题讨论】: