Forum
Merhaba,
Arkadaşlar C# yazmış olduğum bir kod var timerin elapsed olayı ile 10 dakikada bir tekrar eden bir olayı gerçekleştirmek için servis oluşturmam gerek.
Daha önce oluşturmadım araştırdım bi kaç kere deneme servislerim çalıştı log yazdımdım.Ama çok sorun yaşıyorum.Win7 kullanıyorum.193: 0xc1 hatası,Servis başlatıldı ama sonra durduruldu,servis 1053 hatası gibi hatalar alıyorum.Localde servisimin install edilip düzgün çalışması ve HATA vermemesi için nerelere dikkat etmeliyim oluşturken.İyi çalışmalar
Merhaba,
Yazdığın kodu gönderebilirmisiniz.
Selahattin
Saygılar,
public RupdaterService()
{
InitializeComponent();
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
}
protected override void OnStart (string[] args)
{
timer1.Enabled=true;
this.DBEntry("Service Started");
}
protected override void OnStop()
{
this.timer1.Enabled = false;
this.DBEntry("Service Stopped");
}
private void timer1_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
{
this.DBEntry("Service Running");
}Kodlar bu şekilde DBEntry metodu veritabanına kaydediyo logu koddan ziyade servisi çalıştıramadım işte
Event Viewer 'de Application Log kaydediyor mu?Ayrıca DBEntry Method call 'da bazı exception olması muhtemel.Son olarak bunu daha iyi anlamak için debugging yapabilirsiniz.Bunun için ;
http://www.codeproject.com/KB/dotnet/DebugWinServices.aspx buraya bakabilirsiniz.
Ek olarak aklıma gelenler ;
Event Loglara herhangi bir şey düştü mü? Çünkü düşen bu loglar sana ipucu olabilir.
Ayrıca Event Logları dolumu? Eğer sen log yazmaya kalkışırsan hem log yazamayacaksın hem de servisin çalışmayacaktır.Bunun için application loglarını tamamen temizle.
Aynı şekilde .config dosyası içinde tüm syntax hataları var mı ? Yani , </configuration> sonundan sonra <endpoint> etiketini koymak .msi yükleyicide bizde sorun yapmıştı.Bunu kontrol et.
Ayrıca , gördüğüm kadarıyla veritabanına bir şey yazmaya çalışıyorsun. Bu veritabanına servisin çalıştığı kullanıcı ,aynı zaman da veritabanına erişimi var mı?
Son olarak , Visual Studio instance bağlanmak için Windows prompt da OnStart() 'ın başına Debugger.Break() koymayı deneyin.Eğer bunu koymadan önce ve ya sonrasında hata gelirse bunu bizimle paylaşınız.
http://www.howtogeek.com/wiki/Debugging_a_.NET_Windows_Service_in_Vista_with_Visual_Studio
Saygılar,
Windows servislerinde temel hata, (3 tipten) hangi timer objesini kullandığınızdır. Siz, System.Windows.Timer'ı kullandınız sanırım. Tetikleme bu yüzden başlamıyor olabilir. Aşağıdaki örnekte yer alan Timer objesi, System.Timers.Timer namespace'ini kullanır. Şu anda aktif olarak kullandığım servistir.
partial class CozumparkMailServisi : ServiceBase
{
public CozumparkMailServisi()
{
InitializeComponent();
}
Timer timer = new Timer();
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 60000;
timer.Enabled = true;
WriteEvent("Servis basladi.");
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
timer.Enabled = false;
WriteEvent("Servis durduruldu.");
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
StartMailing.Gonder();
}
private System.Diagnostics.EventLog OlayLog;
void WriteEvent(string islem)
{
OlayLog = new EventLog();
if (!System.Diagnostics.EventLog.SourceExists("CozumparkMailServisi"))
{
System.Diagnostics.EventLog.CreateEventSource("CozumparkMailServisi", "CozumparkMailServisi");
}
OlayLog.Source = "CozumparkMailServisi";
OlayLog.WriteEntry(islem, EventLogEntryType.Information);
}
}
Söylediklerinizi kontrol ederek tekrar denicem sonucu yine burda paylaşırım.Ayrıca sormak istediğim ayrı birşey ise şu yazmıl olduğum servisi c#2010 da ayrı bir setup dosyası oluşturuyorum ayarlarını şu sitedekileri uygulayarak yapıyorum.
http://www.dotnetspider.com/resources/869-How-schedule-task-using-windows-Services.aspx
debug ettikten sonra setup projesine sağ tıklayıp install diyorum.Eksik yada eklemem gereken daha sonrasında ise sözkonusu hataları alıyorum.Kod kısmını tekrar gözden geçiricem install konusunda da hata yapmıyor isem normal olarak çalışması gerekiyor
Evet arkadaşlar sorun kodlardaymış localde denedim servisim çalışıyor ama servere yüklediğimde bir hata alıyorum.Şununla bağlantılı bir hata;
Göstermiş olduğum web refecence ile alakalı bir sorun;
Description:
Error =An endpoint configuration section for contract 'SrvhedefliServRef.wsrvHermSoap' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name. 24.01.2011 15:08:33
Hata mesajına göre galiba sizin app.config dosyasınızda interface ile eşleşen birden fazla <endpoint> bulunmaktadır.Ekstra <endpoint> 'leri kaldırırsan ,tekrar servisin çalıştığını göreceksin.
Saygılar,
App.config dosyam bu ama hiç endpoint yok nedense.Servisi başlatıyor ama bahsi geçen hatayı alıyorum.Kodda eksik birşeyler olmalı hocam galiba
<?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=b77a5c59" >
<section name="HedefliRUpdater.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a59" requirePermission="false" />
</sectionGroup>
</configSections>
<system.serviceModel>
</system.serviceModel>
<applicationSettings>
<HedefliRUpdater.Properties.Settings>
<setting name="HedefliRUpdater_srvHedefli_wsrvHermesHedefliMesaj"
serializeAs="String">
<value> http://***.com/hedefli/srvHedefli.asmx</value>
</setting>
</HedefliRUpdater.Properties.Settings>
</applicationSettings>
</configuration>
system.serviceModel içerisinde herhangi bir şeye sahip olmadığı görünüyor.Acaba sen kodun içinde ServiceHost yapılandırdın mı?Ayrıca,aldığın hata client 'dan bağlandığında geliyor mu?
2. olarak "ServiceHost" başlatıldığı kodun kısmını mesaj atabilir misin?
http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx
servishost oluşturmadım ben bu konularda yeniyim.Yaptığım şeyi anlatayım.Webservislerimin olduğu bir class kütüphanesi var.Bu webservislerinden bir tanesini win servis oluşturarak çalıştırmam gerek.Tüm kodları localde yazıyorum ve servera sadece .dll dosyasını atıyorum.Çünkü daha önce bu kodu hazırlayan kişi bu şekilde oluşturmuş işleyişi.Yazdığım tüm metotları kodları debug edip .dll dosyasını serverdaki gerekli yere atıp çalıştırıyorum.(belki de app.config dosyasını ayrı bi yere kopyalamam lazım).oluşturduğum win servisi kendi local makinemde yükleyip çalıştırdığımda,kod içerisinde oluşturduğum web referansa bağlanıp gerekli metodu çalıştırıyo bunu loglardan takip ediyorum.Aynı şekilde serverda da çalışsın istediğimde yine localdaki dll'yi kopyaladığımda çalışmıyo.Clint dln yok sadece serverda çalışıcak bu servis.Ve serviste bir çok winservis var buna benzer.Ek olrak belirteyim win7 de oluşturduğum c# 2010 projesinin dll'sini attığım serverın versiyonu 2003.
Sorunu farklı bir yoldan çözdüm arkadaşlar.Web referans oluşturmadan direk web metoduma webrequest ile bağlandım cevap aldım.Cevaplarınız için ayrı ayrı teşekkür ederim.İyi çalışmalar