を返します。だからWebサービスは私のコントロール下にありません。 要求は正常に機能しますが、私はコードで決して答えを得ていません。答えは常にnullです。 (var response = client.SessionCreate(session);
) 奇妙なことは、そのチケットシステムのwiresharkとwebserviceコンソールが、有効な回答を受け取るべきだと言っていることです。 私はこのwebserviceのものにはとても新しいので、私はこの場合どこから始めるのか全く考えていません。ここに私がしたことの説明があります。どんな提案も本当に感謝しています。WCF Webサービスは、常に私たちのチケットシステムのOTRSからのSOAP Webサービスを消費していますヌル
まず私は、通常のC#プロジェクトを作成しただけOTRSプロジェクトのGitHubのサイトのウェブサイト上で見つけることができますWSDLファイルを追加しました。私はそれをサービスリファレンスとして追加し、C#コードを追加しました。
//デバッグ System.Net.ServicePointManager.Expect100Continueのために=偽; Thread.CurrentThread.CurrentUICulture = new CultureInfo( "en-us");サーバーサイドでの
try
{
OTRS.OTRS_Error err = new OTRS.OTRS_Error();
OTRS.GenericTicketConnector_PortTypeClient client = new OTRS.GenericTicketConnector_PortTypeClient("GenericTicketConnector_Port");
OTRS.SessionCreate session = new OTRS.SessionCreate();
session.Item = "someUserNameGoesHere";
session.ItemElementName = OTRS.ItemChoiceType8.UserLogin;
session.Password = "SomePasswordGoesHere";
var response = client.SessionCreate(session);
Console.WriteLine(response.SessionID);
Console.WriteLine(response.Error);
}
catch (Exception exep)
{
Console.WriteLine(exep.Message);
Console.WriteLine(exep.InnerException);
}
finally
{
Console.ReadLine();
}
受信メッセージ
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://www.otrs.org/TicketConnector/SessionCreate</a:Action>
<a:MessageID>urn:uuid:14750529-3de2-4618-8db4-8ac18b681c18</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">http://SomeServer/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnector</a:To>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SessionCreate xmlns="http://www.otrs.org/TicketConnector/">
<UserLogin xmlns="">someUserName</UserLogin>
<Password xmlns="">somePassword</Password>
</SessionCreate>
</s:Body>
サーバーサイドで
送信メッセージ
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<SessionCreateResponse xmlns="http://www.otrs.org/TicketConnector/">
<SessionID>SomeSessionID</SessionID>
</SessionCreateResponse>
</soap:Body>
</soap:Envelope>
Wiresharkの自分のサーバからクライアントに行くHTTP/XMLパッケージ
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<SessionCreateResponse xmlns="http://www.otrs.org/TicketConnector/">
<SessionID>SomeSessionID</SessionID>
</SessionCreateResponse>
</soap:Body>
</soap:Envelope>
Refernce.cs https://gist.github.com/HansVader/1ba3847d918ee15ef16703c8ada6c9bf
WSDL https://gist.github.com/HansVader/dd849e49f4a1584397cd21b0e430b301
私は現在、唯一のSessionnCreateとTicketUpdate機能を必要としています。他の操作は、この時点では無関係です。他の情報が必要な場合はお知らせください。
アップデート:ここで
があるyildizm85のようなトレースツールからのトレースはコメントで示唆:
私はそれはまた、私はでrefernce.cs
を作成したことは注目に値すると思いますsvcutil
ツールを使用しています。なぜなら、私はIsWrappedに問題があったからです。この質問を見て、答え: XmlSerializer attribute not valid in Web Service using WCF
WCFトレースを試しましたか? https://msdn.microsoft.com/en-us/library/ms751526.aspx –
送信したメッセージが正しいと思われ、返されたメッセージのようです。私は名前空間をちょっと調べて、一見して見えます。しかし、デシリアライゼーションは機能していないようで、おそらく何かがWSDLから間違って生成されるか、WSDLが間違っています。サービス参照を複数回追加(追加と削除)しようとしましたか、またはreference.csの何かを変更しましたか? – Cosmin
ServiceStack.net - 本当に良いWebサービスライブラリを見てみることをお勧めします。彼らは、ダウンロードページの下部に古いオープンソースバージョンを持っています。 –