Ich habe ein seltsames Problem. Ich denke, ich folgte Dokumentation richtig, aber mein Code funktioniert nicht. Ich habe diese sehr einfache hart kodierte Test (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();
}
}
}
Ich führe die Testanwendung entweder über die Konsole oder über den Resharper 6 Test Runner aus. Wenn ich die Anwendung im Test Runner ausführe, erhalte ich immer folgende Ausnahme:
IBM.WMQ.MQException : MQRC_CHANNEL_CONFIG_ERROR (Grundcode ist 2539)
Die Ausnahme wird ausgelöst durch MQQueueManager.Connect
(von seinem Konstruktor aufgerufen).
Wenn ich die MQ-Protokolle überprüfe, sehe ich:
AMQ9541: Die für die Datenkonvertierung bereitgestellte CCSID wird nicht unterstützt.
ERLÄUTERUNG: Das Programm wurde beendet, weil entweder die Quell-CCSID '437' oder die Ziel-CCSID '852' nicht gültig ist oder derzeit nicht unterstützt wird.
AKTION: Korrigieren Sie die ungültige CCSID, oder stellen Sie sicher, dass die angeforderte CCSID unterstützt werden kann.
Wenn ich die Anwendung von der Konsole aus ausführe, erhalte ich denselben Fehler, aber wenn ich die Codeseite für die Konsole ändere, indem ich
chcp 437
Meine Testanwendung funktioniert. Wie kann ich die Codepage aus dem Code heraus konfigurieren?