Bilet sistemimiz OTRS'den SOAP web servisi alıyorum. Bu yüzden Web servisi gerçekten kontrolüm altında değil. İstek çok iyi çalışıyor, ancak Kodumda asla yanıt alamıyorum. Cevap her zaman boş. (var response = client.SessionCreate(session);
) Garip olan şu ki, bu bilet sisteminin wireshark ve web servis konsolu, geçerli bir cevap almam gerektiğini söylüyor. Bu web servis hizmetine çok yeniyim, bu yüzden bu durumda nereden başlayacağımı kesinlikle bilmiyorum. İşte burada yaptığım bir açıklama. Herhangi bir öneri gerçekten takdir edilmektedir.WCF Web hizmeti her zaman sıfırlanıyor
İlk önce normal bir C# projesi oluşturdum ve yalnızca OTRS projesinin GitHub site web sitesinde bulunan WSDL dosyasını ekledim. Servis Referansı olarak ekledim ve buna benzeyen C# kodumu ekledim.
// Hata Ayıklaması için System.Net.ServicePointManager.Expect100Continue = false; Thread.CurrentThread.CurrentUICulture = new CultureInfo ("en-us"); serverside de
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();
}
Gelen mesaj
<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>
serverside de
Giden mesaj
<?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 müvekkilime sunucudan gidiş HTTP/XML paketi
<?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 Şu anda sadece SessionnCreate ve TicketUpdate işlevini ihtiyaç https://gist.github.com/HansVader/dd849e49f4a1584397cd21b0e430b301
https://gist.github.com/HansVader/1ba3847d918ee15ef16703c8ada6c9bf
WSDL. Diğer operasyonlar bu noktada zamanla ilgisizdir. Başka bilgiye ihtiyacınız varsa lütfen bize bildirin.
Güncelleme: İşte
olan yildizm85 gibi iz aracından izleri Yorum önerilen:
Ben de ben tarafından refernce.cs
yarattığı dikkati çekiyor düşünüyorum Kendim svcutil
aracıyla, çünkü IsWrapped ile bir sorunum vardı. Bu soruya bir göz atın ve cevap: XmlSerializer attribute not valid in Web Service using WCF
WCF izlemeyi denediniz mi? https://msdn.microsoft.com/en-us/library/ms751526.aspx –
Gönderdiğiniz mesajın doğru olduğuna ve geri aldığınız mesaja benziyor. İsim alanlarını biraz kontrol ettim ve ilk görüşte iyi görünüyor. Bununla birlikte, serileştirme çalışmaz gibi görünmüyor, bu yüzden WSDL'den yanlış bir şey üretiliyor olabilir veya WSDL yanlıştır. Hizmet referansını birkaç kez eklemeyi denediniz mi (ekleme ve silme) veya referans.cs'deki herhangi bir şeyi değiştirdiniz mi? – Cosmin
ServiceStack.net - gerçekten iyi bir web servis kitaplığına bakın. İndirme sayfalarının altında daha eski bir açık kaynak sürümü var. –