Dim token As New Microsoft.Web.Services3.Security.Tokens.UsernameToken(xKULLANICIADI, xSIFRE, Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
ws_c00.RequestSoapContext.Security.Tokens.Add(token)
ws_c00.RequestSoapContext.Security.MustUnderstand = False
ws_c00.RequestSoapContext.Security.Tokens.Add(token)
ws_c00.RequestSoapContext.Security.MustUnderstand = False
--
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+unsubscribe@googlegroups.com adresine e-posta gönderin.
Merhaba arkadaşlar hizmet kayıtda 9107 hatası alıyoruz sürekli yayınlanan dökümandaki örnek xml'leri gönderiyor yine aynı hatayı
Arkadaşlar test servisine xml gönderince 9107 hatasını alıyorduk, gerçek ortama gönderdik ve işlem başarı ile sonuçlandı. Başarılı xml örneği aşağıdadır.
Dim token As New Microsoft.Web.Services3.Security.Tokens.UsernameToken(xKULLANICIADI, xSIFRE, Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
ws_c00.RequestSoapContext.Security.Tokens.Add(token)
ws_c00.RequestSoapContext.Security.MustUnderstand = False
şeklinde yaptığımda RequestSoapContext kısmında referans hatası geliyor.WSE3 yüklü ve wsdl i web service olarak import ettim.Eksik bişey mi var?
HizmetKayitIslemleriServicewse
kullanmalısın
app.config te ekli olmalı bu sekilde ise proplem olmaması gerekiyor, bunlarda işi çözmedi kayıt yapamıyoruz,
sizde bu sekilde düzenleyip gobderdiğiniz bilgiyi sgk ya mail atalım ki düzenlemesini yaptıralım, savunmaları yapanlar var oluyor
cunki
<configSections>
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="gssV3.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<connectionStrings>
<add name="gssV3.My.MySettings.ProvizyonRaporla" connectionString="Data Source=xxx;User ID=sa;Password=xxx" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog" />
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter" />
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<applicationSettings>
<gssV3.My.MySettings>
<setting name="gss_E00_FaturaBilgisiIslemleriService" serializeAs="String">
<value>https://medula.sgk.gov.tr/medulaws/services/FaturaKayitIslemleri</value>
</setting>
<setting name="gss_ARA_YardimciIslemlerService" serializeAs="String">
<value>https://saglik.sgk.gov.tr/medulaws/services/YardimciIslemler</value>
</setting>
<setting name="gssV3_T00_TakipFormuIslemleriService" serializeAs="String">
<value>https://medula.sgk.gov.tr/medulaws/services/TakipFormuIslemleri</value>
</setting>
<setting name="gssV3_F00_RaporIslemleriService" serializeAs="String">
<value>https://medula.sgk.gov.tr/medulaws/services/RaporIslemleri</value>
</setting>
<setting name="gss_A00_ProvizyonIslemleriService" serializeAs="String">
<value>https://saglik.sgk.gov.tr/medulaws/services/HastaKabulIslemleri</value>
</setting>
<setting name="gssV3_ERECETE_ISLEMLERI_SaglikTesisiReceteIslemleriService" serializeAs="String">
<value>https://medeczane.sgk.gov.tr/eczanews/services/SaglikTesisiReceteIslemleri</value>
</setting>
<setting name="gssV3_ERECETE_YARDIMCIISLEMLER_SaglikTesisiYardimciIslemlerService" serializeAs="String">
<value>https://medeczane.sgk.gov.tr/eczanews/services/SaglikTesisiYardimciIslemler</value>
</setting>
<setting name="gssV3_IG_SorgulaWSService" serializeAs="String">
<value>https://gss.sgk.gov.tr/WS_isGoremezlik2011/services/SorgulaWS</value>
</setting>
<setting name="gssV3_ws_onlineprotokol_Service1" serializeAs="String">
<value>https://op.sagliknet.saglik.gov.tr/onlineprotokol.asmx</value>
</setting>
<setting name="gssV3_C00_HizmetKayitIslemleriServiceService" serializeAs="String">
<value>https://medula.sgk.gov.tr/medula/hastane/hizmetKayitIslemleriWS</value>
</setting>
</gssV3.My.MySettings>
</applicationSettings>
<microsoft.web.services3>
<tokenIssuer>
<statefulSecurityContextToken enabled="true" />
</tokenIssuer>
<security>
<securityTokenManager>
<add type="Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken" />
</securityTokenManager>
</security>
<diagnostics>
<trace enabled="true" input="C:\Documents and Settings\meh\Desktop\InputTrace.webinfo" output="C:\Documents and Settings\meh\Desktop\OutputTrace.webinfo" />
<detailedErrors enabled="true" />
</diagnostics>
<messaging>
<mtom clientMode="On" serverMode="always" />
</messaging>
</microsoft.web.services3>
</configuration>
Hizmet kayıt isteği gönderirken bu sınırlandırmaya dikkat etmeniz gerekmektedir." şeklinde geçiyor. Hasta yoğunluğu fazla olan hastanelerimizde faturalama biriminde ortalama 30-40 personel çalışıyor. Bu durumda bu personellerden sadece 20 si aynı anda çalışabilecek. Hizmet gönderimlerindeki 2sn limitinide eklediğimizde işlemlerin çok yavaşlayacağını ve hastane yönetimlerinden tarafımıza dönüş olacağını öngörüyoruz. Bu konu ile çalışma yapılıp sayı arttırılabilirmi ?
1. Servislerin genel çalışma mantığı değiştirilmemişti. Bu şekilde çalışma biçiminde bir hata alınmaması gerekiyor idi. Normalde bizim görevimiz olmamasına rağmen bu durumu ileteceğim.
2. Çok sık olan gönderimleri engellemek için yaptığımız bu kontrolleri uzun süre pilot çalışmalarımızda belirlemiştik. Eğer bu hatayı sık alırsanız ve bunu tekrar bildirebilirseniz sayı arttırılabilir.
3. Test ve gerçek ortam güncel wsdl lerini kontrol ettim bu alan şu anda mevcut. Aşağıdaki test adresine bağlı wsdl den kontrol edebilirsiniz.
http://saglikt.sgk.gov.tr/medulaws/services/HizmetKayitIslemleri?wsdl
4. Sanırım client uygulaması 2. durumda gelen response mesajını parse ederken hata alıyor. Yani aldığınız hata mesajı daha çok client uygulamasının bir hata mesajına benziyor.Bir önceki cevabımızda bahsettiğimiz gibi aynı mesajı SOAP UI 'da başarııyla gönderip cevap alabiliyoruz.Dolayısıyla client uygulamasının dönüş mesajını aldığı ve parse ettiği kısma bakmanızı öneririm.
Hizmet kaydet, hizmet iptal ve hizmet oku metodlarını güncel servislerde gerçek ortamda başarılı olarak çalıştırdığım xml bilgilerini ekte paylaşıyorum arkadaşlar. Yararlı olur umarım.
--
Ali bey kullandığım dosya ektedir. İyi çalışmalar..
--
Timestamp ve nonce tarihinde problem var 3 saat geri İngiltere saatine gore oluşuyor, sgk da herhalde tr gore kontrol yapıyor prblem burdan kaynaklı, bunu nasıl halledebiliriz, Timestamp ve nonce saatini nasıl olusturabiliriz
P Çıktı almadan önce çevreye olan sorumluluğumuzu bir kez daha düşünelim. / Please consider the environment before printing any document.
Dim token As New Microsoft.Web.Services3.Security.Tokens.UsernameToken(xKULLANICIADI, xSIFRE, Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
ws_c00.RequestSoapContext.Security.Timestamp.TtlInSeconds = 1000000 ' bunu verin
ws_c00.RequestSoapContext.Security.Tokens.Add(token)
ws_c00.RequestSoapContext.Security.MustUnderstand = False
.net 'te WSE 3.0 ı kurup, yeni servisi Web Service Reference olarak ekledim.
Visual studio 2 class dosyası oluşturdu.
1. HizmetKayitIslemleriServiceServiceWse : Microsoft.Web.Services3.WebServicesClientProtocol
2. HizmetKayitIslemleriServiceService : System.Web.Services.Protocols.SoapHttpClientProtocol
daha önceki medula servislerinde 2.nci kullanıyorduk. Yeni serviste 1. mi kullanıcaz ? 2.ncisini kullanamazmıyız ?
Servisi kullanmak için aşağıdaki gibi bir kod yazdım;
HizmetKayitIslemleriServiceServiceWse serviceWse = new HizmetKayitIslemleriServiceServiceWse();
UsernameToken userToken = new UsernameToken("Gerçekhastanekullanıcıadı", "şifre", PasswordOption.SendPlainText);
serviceWse.RequestSoapContext.Security.Timestamp.TtlInSeconds = 1000000;
serviceWse.RequestSoapContext.Security.Tokens.Add(userToken);
serviceWse.RequestSoapContext.Security.MustUnderstand = false;
hizmetOkuGirisDVO giris = new hizmetOkuGirisDVO();
giris.saglikTesisKodu = 111111;
giris.takipNo = "111111";
hizmetOkuCevapDVO cevap = serviceWse.hizmetOku(giris);
Aşağıdaki hatayı alıyorum. Yardımcı olursanız sevinirim.
---------------------------
System.Net.WebException: The request failed with an empty response.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at TestWebService1.YeniHizmetKayit.HizmetKayitIslemleriServiceServiceWse.hizmetOku(hizmetOkuGirisDVO hizmetOkuGiris)
at TestWebService1.Form1.hizmetOkuButton_Click(Object sender, EventArgs e)
---------------------------
OK
---------------------------
1. HizmetKayitIslemleriServiceServiceWse : Microsoft.Web.Services3.WebServicesClientProtocolkullanacaksınız
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+unsubscribe@googlegroups.com adresine e-posta gönderin.
Partial Public Class HizmetKayitIslemleriServiceService
'Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
Inherits Microsoft.Web.Services3.WebServicesClientProtocol
Private hizmetKayitOperationCompleted As System.Threading.SendOrPostCallback
Arkadaşlar bende sadece HizmetKayitIslemleriServiceService : System.Web.Services.Protocols.SoapHttpClientProtocol olan gözüküyor, wse 3.0 kurulu ve gerçek ortam adresini kullanıyorum 1. sıradaki hiç bir şekilde gelmiyor, ne olabilir acaba
Ben delphi 2009 kullandığım için header kısmını programla yazdım ama envelope kısmını değiştirmek zorunda kaldım. header için alttakini kullandımHdr := Security.Create;
Hdr.MustUnderstand := False;Hdr.UsernameToken := UsernameToken.Create;
Hdr.UsernameToken.Id := 'SecurityToken-04ce24bd-9c7c-4ca9-9764-92c53b0662a5';
Hdr.UsernameToken.Username := '********';
Hdr.UsernameToken.Password := Password.Create;
Hdr.UsernameToken.Password.Type_ :='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText';
Hdr.UsernameToken.Password.Text := '*******';
Headers := GetHizmetKayitIslemleriservice(True, '', HTTPRIO1) as ISOAPHeaders;
Headers.OwnsSentHeaders:=true;
Headers.Send(hdr);
HTTPRIO1.SOAPHeaders.SetOwnsSentHeaders(true);
Envelope değiştirmek için ise (benim için utanç verici ama :)) on before execute ye bunları yazdımMyStringList.Text := StringReplace(MyStringList.Text, 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"', 'xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ser="http://servisler.ws.gss.sgk.gov.tr"', []);
MyStringList.Text := StringReplace(MyStringList.Text, 'xmlns:xsd="http://www.w3.org/2001/XMLSchema"','xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"' , []);
MyStringList.Text := StringReplace(MyStringList.Text, '<hizmetKayit xmlns="http://servisler.ws.gss.sgk.gov.tr">', '<ser:hizmetKayit>', []);
MyStringList.Text := StringReplace(MyStringList.Text, '</hizmetKayit>', '</ser:hizmetKayit>', []);
22 Haziran 2013 Cumartesi 10:57:03 UTC+3 tarihinde Celalettin Karagul yazdı:C# VS2005 ve WSE3.0 kullanıyorum.Ekte gönderim yaptığım xml dosyası var.Siz soap header kısmını manuel mi oluşturdunuz eğer kodla yaptıysanız o kısma ait kodu paylaşırmısınız.Merhaba Osman BeyBende sizin tam tersi durumda hata alıyorum test servislerine 123456 şifresi ve tesis kodu ile gönderince hata almıyorum.
Gerçek servislere gönderince 9107 hatası alıyorum.
Merhaba.Dün itibariyle yeni hizmet kayıt web servislerini aktif edip hastanelerimizde denemeye başladık. Ancak her değişiklikte olduğu gibi yine 1 milyon tane farklı ve saçma hata ile karşılaştık.Yaşadığımız çözümleyebildiğimiz / çözümleyemediğimiz sıkıntıları burada paylaşırsak bu sıkıntılı süreçten hepimiz daha az sinir stres ile ayrılacağımızı düşünüyorum. Bazılarını aşağıya ekledim arkadaşlar..
- "Adet bilgisi hatalı" mesajı dönenler için wsdl içerisinde olan adetspecified i true olarak göndermek gerekiyor.
- "Aynı takip numarası 2 saniye içerisinde ikince defa gönderilemez" hatası dönenler için: 20 den fazla işlemi olan hastalarda ilk 20 kaydı gönderdikten sonra 2 sn bekleyip 2. 20 kaydı gönderdiğinizde düzeliyor.
- Yatan hastalarda paket tedavi ile birlikte sarf malzeme var ise paketharic parametresi 0 gönderilmesi gerekiyor. Ancak bu şekilde fiyat döndürmedi. Çözümünü henüz bulamadım.Eski servislerde kılavuzda 0 pakete dahil olarak yazılmış olsada paketharic parametresini 1 olarak gönderdiğimizde kabul ediyordu. Şİmdi 0 yada 1 göndermek fark etmiyor hiçbirine fiyat döndürmüyor.
- Hizmet Oku metodunda ise eski ve yeni web servis kullanılarak hizmet kayıt yapılmışsa cevap döndürmüyor. Bu durumda hizmetlerin tamamının ya eski web servis ile yada yeni web servis ile kaydedilmesi gerekiyor. 2si bir arada olduğunda hizmet oku kullanılamıyor.
Ayrıca kılavuzda yazılana göre aynı ip adresinden 10 sn içerisinde maksimum 20 istek gönderilebilir diye belirtmişler. Bu demek oluyorki; Fatura biriminde 30 kişi çalışıyorsa bunlardan 20si aynı anda hizmet kayıt yapabilecek diğerleri yapamayacak. 2 sn limitinide ekleyince faturalama sürecinin çok yavaşlayacağını düşünüyorum.
Çok sık olan gönderimleri engellemek için yaptığımız bu kontrolleri uzun süre pilot çalışmalarımızda belirlemiştik. Eğer bu hatayı sık alırsanız ve bunu tekrar bildirebilirseniz sayı arttırılabilir.
Merhaba.
Sarf malzeme ve ilaçlardaki fiyat dönmeme sorunu dışında başka bir şey kalmadı şu anda. Konuyla ilgili daire başkanlığı, sgk ve xml mail adreslerine bilgi gönderdik cevap bekliyoruz. Cevap geldiğinde buraya yazacağım yine. Bizden kaynaklı birşey olup çözebilen olursa yazsın lütfen.Ayrıca bugün Perşembe. Pazartesi itibariyle eski web servis kullanım dışı olacak arkadaşlar. Tamamlamayan varsa acele etmesini öneririm.
--
Arkadaşlar bende sadece HizmetKayitIslemleriServiceService : System.Web.Services.Protocols.SoapHttpClientProtocol olan gözüküyor, wse 3.0 kurulu ve gerçek ortam adresini kullanıyorum 1. sıradaki hiç bir şekilde gelmiyor, ne olabilir acaba
Sarf malzeme ve ilaçlardaki fiyat dönmeme sorunu dışında başka bir şey kalmadı şu anda. Konuyla ilgili daire başkanlığı, sgk ve xml mail adreslerine bilgi gönderdik cevap bekliyoruz. Cevap geldiğinde buraya yazacağım yine. Bizden kaynaklı birşey olup çözebilen olursa yazsın lütfen.Ayrıca bugün Perşembe. Pazartesi itibariyle eski web servis kullanım dışı olacak arkadaşlar. Tamamlamayan varsa acele etmesini öneririm.
--
Yılmaz bey merhaba.
20.06.2013 15:18 de aşağıdaki maddeninde yer aldığı 3 maddelik bir mail göndermiştim
Merhaba. Güncel hizmet
kayıt metodunu kullanarak yaşadığımız sıkıntılar aşağıdaki gibidir.
- Kullanım kılavuzundaki verilere göre Yatan hastalarda paket tedavi ile
birlikte sarf malzeme var ise paketharic parametresi 0 gönderilmesi gerekiyor.
Ancak bu şekilde meduladan fiyat "0" dönüyor. 1 olarak
gönderdiğimizdede aynı şekilde fiyat dönmüyor. Eski web servisi kullanarak aynı
hasta üzerinde paketharic alanını 1 olarak gönderdiğimizde fiyat dönüyor.
Gelen Cevap aynı gün 15:29 da:
Sorularınıza aşağıdaki gibi cevap vermeye çalışayım.
1. Servislerin genel çalışma mantığı değiştirilmemişti. Bu şekilde çalışma biçiminde bir hata alınmaması gerekiyor idi. Normalde bizim görevimiz olmamasına rağmen bu durumu ileteceğim.
Şeklinde olmuştu. Konuyla ilgili herhangi bir gelişme olmaması üzerine medulayeniversiyon adresine mail gönderdik. Aynı maili şimdi sizede gönderdim tekrar.
Hizmet kayıt aşamasında sıkıntı çıkmıyor. Hizmet oku dan cevapta dönüyor. Fatura tutar oku aşamasında bu yapmış olduğumuz ilaç ve sarf malzemelere fiyat dönmüyor.
6. Zararlı içerik hatası alıyorum.
Gönderilen XML Mesajlarında Saldırı amaçlı kullanılabilecek özel kontrol karakterlerinini kontrolleri yapıldığından, gönderilmeden önce mesajda özel kontrol karakterlerinin olup olmadığının kontrol edilmesi ve varsa temizlenmesi gerekmektedir. En sık rastlanılan durum tab (\t) karakteridir.
Ek 4 - XML Gateway Test Kılavuzu.docx dokümanında yazılmış .net kod ile gönderiliyor text kısmında belki iştemediği karakter olabilir testlerimde karşılaşmadım, ama devreye aldığımda beğenmediği karakterlerde yapıyor olabilir,
--
Arkadaşlar merhaba, hizmet gönderimlerini yaptıktan sonra, Meduladan dönen hizmetKayitCevapDVO objesi içersindeki array olarak tutulan hataliKayitIslemBilgisiDVO nesneleri null olarak dönmektedir. Örnek vereyim. Gönderdiğiniz 10 hizmetten 5 tanesi hatalı ise, hataliKayitIslemBilgisiDVO içersindeki hataliKayitlar içersine 5 tane null create edilmiş. Hata bilgileri set edilmemiş. Sizde de böyle bir hata var mı?
2 Temmuz 2013 Salı 17:06:51 UTC+3 tarihinde Özgür ERKILIÇ yazdı:
--
ws_c00.RequestSoapContext.Security.Clear()
etmeyi unutmayınız,
wsse:UsernameToken öncekilerde gidiyor ben gözden kacırmısım
--
--
Merhaba.
Merhaba,
Yeni Medula değişikliğinden mi kaynaklı bilmiyorum ama mevcut hizmetlerimizi (örneğin toplu tahlilleri) gönderirken daha önce alınmayan hatalar almaktayız.
Hatalar: “Aynı takip numarası 2 saniye içerisinde ikince defa gönderilemez” ve “Bir istemcinin gönderebileceği istek limitine ulaştınız”
Bu konularla ilgili yardımcı olabilecek arkadaşlara şimdiden teşekkür ediyorum.
--
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
Yeni Hizmet Kayıt Servisi Kullanımında Dikkat Edilmesi Gereken Hususlar
Yeni Hizmet Kayıt servisinin devreye alınması ile birlikte mesajlar üzerinde yapılacak kontroller sebebiyle kullanıcıların mağdur olmamaları için aşağıdaki hususlara dikkat etmeleri önemle rica olunur:
1. IP bazlı mesaj sayısı kontrolü nedeniyle, tek bir noktadan (IP adresinden) sınırsız mesaj gönderimi artık sınırlanmış bulunmaktadır. Bu sebeple tek bir IP adresinden 5sn içerisinde en fazla 20 mesaj gönderilebilecektir. Hasta sayısı fazla olan hastanelerin ve kurumların bu kontrolden dolayı mağdur olmamaları için aşağıdaki yöntemleri önermekteyiz:
1.1 Servis çağrımlarını farklı kurumlardan tek bir IP üzerinden yapmak yerine her bir kurum için ayrı bir IP üzerinden yaparak mesajların tek bir noktaya yoğunlaşmasının önlenmesi.
1.2 Bu kontrole takılmamak için servis çağrımlarının biriktirilerek hep birden toplu gönderilmesi yerine biriktirilmeden zamana yayılması ve mümkünse günlük olarak gönderilmesi.
2. Takip No bazlı mesaj sayısı kontrolü nedeniyle aynı takip numarasına ait mesajların peş peşe gönderilerek sistemde kontrolsüz aşırı yük oluşturmasını önlemek amacıyla 2sn içerisinde aynı takibe ait bir mesajın gönderilmesi önlenmiştir. Böylelikle aynı takip numarasına ait hizmet kayıt mesajları gönderilirken peş peşe göndermek yerine 2 sn bekleme koyarak gönderilmelidir. Bu kontrolle mesaj gönderimlerinin zamana yayılması hedeflenmiştir.
3. Gönderilecek mesaj boyutu 30 KB ile sınırlandırılmıştır. Gönderimlerinizin bu sınıra takılmaması için yapacağınız gönderimleri bölerek yapmanız tavsiye edilir. Ayrıca zamana yayarak (mümkünse günlük olarak) yapılan gönderimlerde bu kısıtlamaya takılmanın daha seyrek olacağını tahmin etmekteyiz.
Mesaj karmaşıklığı ile (complexity, derinlik..) ilgili alınan hatalar için de yine gönderimlerin parçalanarak yapılması tavsiye edilmektedir.
4. Mesaj gönderimlerinde kurumların network yavaşlığından dolayı cevap alamamaları gibi durumlar söz konusu olduğunda istemci uygulamanın timeout değeri artırılabilir. Veyahut veri gönderimini hızlandırmak amacıyla gönderilecek mesajlar gzip formatında sıkıştırılarak gönderilebilir.
5. Aşırı kompleks XML mesajları ile sistemi yorup çökertmeye yönelik saldırıların önünün alınması için Mesaj derinliği kontrolü eklendi. Bu kontrol nedeniyle hata alınmaması için mesajlarınızı oluştururken yukarıda belirtilen kriterlere uygun olmasına dikkat edilmesini önemle belirtmek isteriz. Bu kontrole göre XML mesajlarının yapısal özellikleri aşağıdaki şekilde sınırlandırılmıştır :
4.1. Mesajda toplam en fazla 1000 element bulunabilir.
4.2. Bir elementin altında en
fazla 100 child element bulunabilir.
4.3. Mesaj derinliği en fazla 8 olabilir. (Yani
hiyerarşik olarak alt alta en fazla 8 parent - child element bulunabilir )
4.4. Bir elementin en fazla 10 attribute'u
olabilir.
30 KB paket sınırı haricinde bir seferde ene fazla 30 adet hizmet satırı gönderme sınırı kaldırıldı mı?
.net 'te WSE 3.0 ı kurup, yeni servisi Web Service Reference olarak ekledim (Test ortamı (yeni) : http://saglikt.sgk.gov.tr/medula/eczane/saglikTesisiReceteIslemleriWS?wsdl ).
SaglikTesisiReceteIslemleriServiceWse : Microsoft.Web.Services3.WebServicesClientProtocol sınıfı oluşturuldu.
Servisi kullanmak için yazdığım kod ve app.Config aşağıdadır.
SaglikTesisiReceteIslemleriServiceWse serviceWse = new SaglikTesisiReceteIslemleriServiceWse();
string username = "99999999990";
string password = "99999999990";
UsernameToken userToken = new UsernameToken(username, password, PasswordOption.SendPlainText);
serviceWse.RequestSoapContext.Security.Timestamp.TtlInSeconds = 1000000;
serviceWse.RequestSoapContext.Security.Tokens.Add(userToken);
serviceWse.RequestSoapContext.Security.MustUnderstand = false;
ereceteSorguIstekDVO istek = new ereceteSorguIstekDVO();
istek.doktorTcKimlikNo = 99999999990L;
istek.ereceteNo = "12345678"; // tek örnek reçete no'yu dökümanda bulamadım.
istek.tesisKodu = 11069904;
ereceteSorguCevapDVO cevapp = serviceWse.ereceteSorgula(istekk);
Aşağıdaki hatayı alıyorum. Yardımcı olursanız sevinirim.
---------------------------
hata mesajı : "Kullanici bilgileriniz eksik, ya da kullanici denetimi yapilmasina engel bir durum var! Detay: nested fault: No Username Security Token found in the WS block with actor: current actor"
hata kodu : 9903
App.config'de şu şekilde:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="ConsoleApplication13.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<applicationSettings>
<ConsoleApplication13.Properties.Settings>
<setting name="ConsoleApplication13_tr_gov_sgk_saglikt_SaglikTesisiReceteIslemleriService"
serializeAs="String">
<value>http://saglikt.sgk.gov.tr/medula/eczane/saglikTesisiReceteIslemleriWS</value>
</setting>
<setting name="ConsoleApplication13_tr_gov_sgk_medeczane_SaglikTesisiReceteIslemleriService"
serializeAs="String">
<value>http://medeczane.sgk.gov.tr/eczanews/services/SaglikTesisiReceteIslemleri</value>
</setting>
</ConsoleApplication13.Properties.Settings>
</applicationSettings>
<microsoft.web.services3>
<messaging>
<mtom clientMode="Off" serverMode="never" requireSoapEnvelopeFirst="false" />
</messaging>
<security>
<securityTokenManager>
<add type="Microsoft.Web.Services3.Security.Tokens.UsernameTokenManager, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" localName="UsernameToken" />
</securityTokenManager>
</security>
<diagnostics>
<trace enabled="true" input="InputTrace.webinfo" output="OutputTrace.webinfo" />
<detailedErrors enabled="true" />
</diagnostics>
<tokenIssuer>
<statefulSecurityContextToken enabled="true" />
</tokenIssuer>
</microsoft.web.services3>
</configuration>
iyi günler,
yararlı olabildiysem ne mutlu,25 Haziran 2013 10:15 tarihinde Yusuf <eequ...@gmail.com> yazdı:
Paylaşımın için teşekkürler... başarılı gönderim yapabildik sayende... :)24 Haziran 2013 17:41 tarihinde jenarasyon <mmoll...@gmail.com> yazdı:
olayı cozdum, hadi geçmiş olsun :)Dim token As New Microsoft.Web.Services3.Security.Tokens.UsernameToken(xKULLANICIADI, xSIFRE, Microsoft.Web.Services3.Security.Tokens.PasswordOption.SendPlainText)
ws_c00.RequestSoapContext.Security.Timestamp.TtlInSeconds = 1000000 ' bunu verin
ws_c00.RequestSoapContext.Security.Tokens.Add(token)
ws_c00.RequestSoapContext.Security.MustUnderstand = False
24 Haziran 2013 15:59 tarihinde atilla acar <atill...@monadyazilim.com> yazdı:Evet timestamp'i kaldırınca gidiyor,
Anlayamadığım, madem timestamp'i dikkate almayacaklar neden istiyorlar. O zaman ws-security'nin manası kalmıyor ki. Sadece username ve password'ü check ediyorlarsa basitçe bir authentication header kullanabilirlerdi. Böylece Delphi-7 vs... de yapan arkadaşlarımızda zorlanmadan yaparlardı.
2013/6/24 Emre Baytar <eba...@gmail.com>sizin paylaştığınız bir mail de"2. Username ve password ws-security standardında gönderilmelidir. Gönderimlerinizde nonce ve timestamp göndermezseniz daha rahat gönderim yapabilirsiniz, bu alanları kontrol etmiyoruz. "şeklinde bir cevap ilettiklerini söylemiştiniz bu şekilde denediniz mi ?24 Haziran 2013 15:44 tarihinde jenarasyon <mmoll...@gmail.com> yazdı:
ben xlm yi gönderdim,Timestamp ve nonce tarihinde problem var 3 saat geri İngiltere saatine gore oluşuyor, sgk da herhalde tr gore kontrol yapıyor prblem burdan kaynaklı, bunu nasıl halledebiliriz, Timestamp ve nonce saatini nasıl olusturabiliriz
24 Haziran 2013 15:31 tarihinde Yusuf <eequ...@gmail.com> yazdı:
vs 2008 de halen başarılı olamadım... yardım edebilir misiniz?24 Haziran 2013 15:10 tarihinde Gökhan Barık <rok...@gmail.com> yazdı:
Ali bey kullandığım dosya ektedir. İyi çalışmalar..
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
--
Merhabaİyi Günler
Emre BAYTARP Çıktı almadan önce çevreye olan sorumluluğumuzu bir kez daha düşünelim. / Please consider the environment before printing any document.
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
--
Atilla ACAR
Software Engineer
Monad Software&Consulting
Hacettepe Teknokent 1 Nolu AR-GE Binası
No:3 06800 Beytepe/ANKARA/Türkiye
Tel: +90 0312 299 23 60
Fax: +90 0312 299 23 58
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.
--
Bu e-postayı Google Grupları'ndaki "Sağlık Net İletişim Portalı Yazılım Geliştiriciler İçin" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için saglik_net+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/groups/opt_out adresiniz ziyaret edin.