Kategori: .NeT 2008
Şubat 25th, 2010
Biztalk Administration Console olmadan, DB ye bakmak suretiyle Biztalk dan gelip geçen mesajları görmeniz pek mümkün olmamaktadır.
DB’yi ne kadar kurcalarsanız kurcalayın, Table lardaki bilgilerin (TrackingDB deki) anlamsız (okunamaz) durumda olduğunu göreceksiniz.
Peki Örneğin Bir Web Service veya Bir Web Sayfasında, Biztalk Server üzerinden gelip geçen mesajları ve mesajların içeriklerini nasıl gösterebiliriz?
Kullanabileceğiniz Metodlar Şöyle :
usings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Operations = Microsoft.BizTalk.Operations;
using Microsoft.BizTalk.Message.Interop;
using System.IO;
using System.Globalization;
using System.Collections.ObjectModel;
Altı çizili olan dll leri Biztalk un kurulduğu dizin içerisinde bulabilirsiniz;
Definitions;
private string TrackingServer = "Biztalk SQL Server";
private string TrackingDB = "DTA DB";
Biztalk SQL Server : Biztalk Server ın DB sinin bulunduğu server (local vs olabilir).
DTA DB : Tracking DB nizin adı, değiştirmediyseniz BiztalkDTAdb olmalı.
GetServiceMessages Metodu;
public Collection<BTMsgInstance> GetServiceMessages(string ServiceInstanceId)
{
Collection<BTMsgInstance> collection = new Collection<BTMsgInstance>();
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Operations.MessageFlow flow = ops.GetMessageFlow(new Guid(ServiceInstanceId), tdb);
foreach (Operations.MessageEvent message in flow.MessageEvents)
{
BTMsgInstance instance = new BTMsgInstance
{
EndTime = message.RoutingDetails.Source.EndTime,
StartTime = message.RoutingDetails.Source.StartTime,
InstanceID= message.RoutingDetails.Source.InstanceID,
ErrorInfo = message.RoutingDetails.Source.ErrorInfo,
ExitCode = message.RoutingDetails.Source.ExitCode,
ServiceName = message.RoutingDetails.Source.ServiceName
};
collection.Add(instance);
}
return collection;
}
GetTrackedMessageData Metodu;
public string GetTrackedMessageData(string MessageInstanceId)
{
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Guid guid = new Guid(MessageInstanceId);
IBaseMessage trackedMessage = ops.GetTrackedMessage(guid);
IBaseMessagePart part = trackedMessage.BodyPart;
Stream stream = part.Data;
StreamReader reader = new StreamReader(stream);
return string.Format(CultureInfo.CurrentCulture, "0", new object[] { reader.ReadToEnd() });
}
Unutmadan yukarıdaki kodun çalışması için Biztalk Server üzerinde bir IIS’ e kurmanızı öneririm, zira kodlar yetki ile ilgili problemlerden dolayı çalışmayabilirler. Bu yüzden bu metodları bir web service olarak hazırlamanız en iyisi olacaktır. Daha sonra yapacağınız ayrı bir web uygulaması ile de bu metodları çağırıp gerekli bilgileri alabilirsiniz.
GetServiceMessages metodu, Bir servisin Instance ID sini input olarak alır ve BTMsgInstance sınıfında bir değişken döndürür. Bunun içinde EndTime, StartTime, InstaceID, ErrorInfo, ExitCode, ServiceName gibi bilgiler bulunmaktadır.
GetTracketMessageData metodu ise Message Instance ID si verilen bir mesajın içeriğini XML olarak bize döndürür.
Bu kadar bilgiden sonra lan olm iyi güzelde ServiceName ve ServiceInstanceID lerini nereden bulacam da bu metodlara gönderip sonuçları alacam diyebilirsiniz. Demelisiniz de
Onu da düşündüm, onu da anlatıcam size
ServiceName leri bulabilmek için aşağıdaki SQL i çalıştırıyoruz,
SELECT DISTINCT sf.[Service/Name] AS [Service Name]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL;
ServiceInstanceID leri bulabilmek için de aşağıdaki SQL e, ServiceName gönderiyoruz
SELECT sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/InstanceId] AS [Service Instance Id]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] = '" + serviceName + "'
ORDER BY sf.[ServiceInstance/StartTime] DESC
Daha da detaylı bilgi gerekirse dtav_ServiceFacts tablosundaki verileri inceleyebilirsiniz.
Son 10 mesajın Bilgilerini getiren SQL;
SELECT TOP 10
sf.[ServiceInstance/InstanceId] AS [Service Instance Id],
sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/State] AS [State] ,
dateadd(minute, 180, sf.[ServiceInstance/StartTime]) AS [Start Time],
dateadd(minute, 180, sf.[ServiceInstance/EndTime]) AS [End Time],
sf.[ServiceInstance/Duration] AS [Duration],
sf.[ServiceInstance/ExitCode] AS [Error Code],
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL
AND sf.[Service/Type]='Orchestration'
ORDER BY [Start Time] DESC
Tags: BizTalk, Biztalk 2009, BizTalk Administration, Biztalk Administration Console, BTMsgInstance, BTS, BTS 2009, DTADB, Service Messages, ServiceInstanceID, ServiceName, Tracked Message, web service
Posted in .NeT 2008, Bilgisayar, BizTalk | No Comments »
Şubat 25th, 2010
Bildiğiniz gibi tif dosyaları normal resim gibi gösterilememektedir. Biraz araştırma yaptıktan sonra çoğu sitede böyle bir imkanın olmadığını, sadece operanın böyle bir özelliğe sahip olduğunu ve tif dosyalarını gösterebildiğini gördüm;
Yanlış
Yapmanız gerekenler ;
- Aşağıdaki linkten, tifleri görüntüleyebilmek için alternatiff adlı plugini indiriyoruz,
link : http://www.alternatiff.com/distribution
- Sıkıştırılmış dosyanın içindeki install.bat dosyasını çalıştırarak ocx dosyasını register ediyoruz,

- Daha sonra ise, aşağıdaki kodu kullanarak sayfada gösterimi sağlayabilirsiniz
<object width=200 height=200
classid="CLSID:106E49CF-797A-11D2-81A2-00E02C015623">
<param name="src" value="tiffdocument.tif">
<param name="negative" value="yes">
</object>
Tags: How To, tif, tiff, tiff in html, tiff view
Posted in .NeT 2008, Yazılım | No Comments »
Şubat 20th, 2010
çook basit ama arayıpda bulunamayan programlardandır bu 
ben de MP3 lerin ID3 taglerini değiştiren basit ama düzgün çalışan bir uygulama aradım, fakat bulamadım. Ulen ben yazarım dedim sonra,
ahada yazdım, isteyen olursa kullanabilir, Kullandıkça beni hatırlarsınız…
Ekran Görüntüsü :

Download :
ID3Changer
Kullanımı :
- Programı Çalıştırıyoruz;
- Load MP3 butonuna tıklıyoruz;

- Değişiklik yapmak istediğimiz dosya veya dosyaları seçip Open butonuna tıklıyoruz;

- Sol taraftaki listeden istediğimiz şarkıyı seçiyoruz;

- Sağ taraftan ise ID3 bilgilerini güncelleyip Save butonuna tıklıyoruz.
Tags: Changer, ID3, ID3 Changer, Klavuz, Kullanım, MP3, MP3 ID3 Changer
Posted in .NeT 2008, Yazılım | 2 Comments »
Ağustos 27th, 2009
Hep unutuyorum not alayım belki sizin de işinize yarar
string a = (textBox1.Text.Equals("ssss")) ? "Eşit" : "Yanlış";
Tags: c#, IF
Posted in .NeT 2008 | 2 Comments »
Temmuz 12th, 2009
private DataTable SrtDataTable(DataTable dt, string sort)
{
DataTable newDT = dt.Clone();
int rowCount = dt.Rows.Count;
DataRow[] foundRows = dt.Select(null, sort);
for (int i = 0 ; i < rowCount; i++)
{
object[] arr = new object[dt.Columns.Count];
for (int j = 0; j < dt.Columns.Count; j++)
{
arr[j]=foundRows[i][j];
}
DataRow data_row = newDT.NewRow();
data_row.ItemArray=arr;
newDT.Rows.Add(data_row);
}
dt.Rows.Clear();
for(int i = 0; i < newDT.Rows.Count; i++)
{
object[] arr = new object[dt.Columns.Count];
for (int j = 0; j < dt.Columns.Count; j++)
{
arr[j]=newDT.Rows[i][j];
}
DataRow data_row = dt.NewRow();
data_row.ItemArray = arr;
dt.Rows.Add(data_row);
}
return dt;
}
Yeah, this is not my code
I found it, here
Tags: Datatable, Sort
Posted in .NeT 2008 | No Comments »
Mart 2nd, 2009
Merhabalar!
—————————————————————————————-
Dikkat!!!!
Eğer İnternet çıkışınız sabit (static) ip ise, mümkün olduğu kadar bu kodu çok kullanmamaya çalışın. Google aynı ipden çok fazla sorgu tespit ederse, kendisine zarar verilmeye çalışıldığını zannedip, ipnizi engelleyebilir.
—————————————————————————————-
Google Translate‘in nimetlerinden faydalanmak ister misiniz?? Elbette istersiniz, hazırladığınız bir uygulamada, kendi sitenizde, internete çıkışı olan herhangi bir sistemde bundan seve seve faydalanabilirsiniz. Google Translate sayesinde babylon gibi paralı çeviri hizmetlerinin benzerlerini, çok kolay bir şekilde kendiniz hazırlayabilirsiniz.
Benim sayfa tasarımım aşağıdaki gibi oldu.



Şu anda mevcut bulunan diller ve kodları aşağıdadır: (Bunlar Kaynak dil ve Hedef dil tespitinde kullanılıyor. Google’ a resource gönderirken çevrilecek olan kelime veya cümle ve tr|en gibisinden bir ifade gönderiliyor. Bu Türkçeden İngilizceye anlamına gelmekte…)
- Almanca – de
- Arapça – ar
- Bulgarca – bg
- Çekoslavakça – cs
- Çince (Basit) – zh-CN
- Çince (Karmaşık) – zh-TW
- Danca – da
- Fince – fi
- Fransızca – fr
- Hırvatça – hr
- Hintçe – hi
- Hollandaca – nl
- İngilizce – en
- İspanyolca – es
- İsveççe – sv
- İtalyanca – it
- Japonce – ja
- Korece – ko
- Norveççe – no
- Polonca – pl
- Portekizce – pt
- Romanca – ro
- Rusça – ru
- Türkçe – tr
- Yunanca – el
Kodun tasarımı aşağıdaki gibi, bunu kendinize göre düzenleyebilirsiniz.
Tanımlamalar :
protected Label label;
protected TextBox textBox;
protected DropDownList LangFrom;
protected DropDownList LangTo;
protected Button buton;
Butonun Tıklanma Eventı :
void buton_Click(object sender, EventArgs e)
{
try
{
string fromto = LangFrom.SelectedValue + "|" + LangTo.SelectedValue;
string sonuc = TranslateText(textBox.Text, fromto);
label.Text = sonuc;
}
catch (Exception ex)
{
label.Text = ex.Message;
}
}
Translate Metodu :
public string TranslateText(string input, string languagePair)
{
try
{
string url = string.Format("http://www.google.com/translate_t?hl=en&if=UTF8&text={0}&langpair={1}", input, languagePair);
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
string result = webClient.DownloadString(url);
int dan = result.IndexOf("id=result_box") + 22;
int da = result.IndexOf("id=result_box") + 500;
result = result.Substring(dan, da - dan);
result = result.Substring(2, result.IndexOf("</div") - 2);
return result;
}
catch (Exception ex)
{
return ex.Message;
}
Dilleri Ekle Metodları :
private void DilleriEkle()
{
DilEkle("Almanca", "de");
DilEkle("Arapça", "ar");
DilEkle("Bulgarca", "bg");
DilEkle("Çekoslavakça", "cs");
DilEkle("Çince (Basit)", "zh-CN");
DilEkle("Çince (Karmaşık)", "zh-TW");
DilEkle("Danca", "da");
DilEkle("Fince", "fi");
DilEkle("Fransızca", "fr");
DilEkle("Hırvatça", "hr");
DilEkle("Hintçe", "hi");
DilEkle("Hollandaca", "nl");
DilEkle("İngilizce", "en");
DilEkle("İspanyolca", "es");
DilEkle("İsveççe", "sv");
DilEkle("İtalyanca", "it");
DilEkle("Japonca", "ja");
DilEkle("Korece", "ko");
DilEkle("Norveççe", "no");
DilEkle("Polonca", "pl");
DilEkle("Portekizce", "pt");
DilEkle("Romanca", "ro");
DilEkle("Rusça", "ru");
DilEkle("Türkçe", "tr");
DilEkle("Yunanca", "el");
}
private void DilEkle(string p, string p_2)
{
LangFrom.Items.Add(p);
LangFrom.Items[LangFrom.Items.Count - 1].Value = p_2;
LangTo.Items.Add(p);
LangTo.Items[LangTo.Items.Count - 1].Value = p_2;
}
Tags: Dil Çevrimi, Google Translate, Sharepoint, vs.net
Posted in .NeT 2008, Sharepoint | 6 Comments »
Ocak 14th, 2009
Call the metod from OnClick Down Button event;
Code ;
public void MoveDown()
{
int startindex = ListBox2.Items.Count - 1;
for (int i = startindex; i > -1; i--)
{
if (ListBox2.Items[i].Selected)
{
if (i < startindex && !ListBox2.Items[i + 1].Selected)
{
ListItem bottom = ListBox2.Items[i];
ListBox2.Items.Remove(bottom);
ListBox2.Items.Insert(i + 1, bottom);
ListBox2.Items[i + 1].Selected = true;
}
}
}
}
Tags: .NeT, ListBox, vs.net
Posted in .NeT 2008 | No Comments »
Ocak 14th, 2009
Call the metod from OnClick Up Button event;
Code ;
public void MoveUp()
{
for (int i = 0; i < ListBox2.Items.Count; i++)
{
if (ListBox2.Items[i].Selected)
{
if (i > 0 && !ListBox2.Items[i - 1].Selected)
{
ListItem bottom = ListBox2.Items[i];
ListBox2.Items.Remove(bottom);
ListBox2.Items.Insert(i - 1, bottom);
ListBox2.Items[i].Value = bottom.Value;
ListBox2.Items[i - 1].Selected = true;
}
}
}
}
Tags: .NeT, ListBox, vs.net
Posted in .NeT 2008 | No Comments »
Ocak 14th, 2009
KOD:
MailMessage mail = new MailMessage();
public void MailSend(string body, string subject, string strTO)
{
mail = new MailMessage();
mail.To.Add(strTO);
mail.Subject = subject;
mail.From = new MailAddress("from@from.com");
mail.Body = body;
SmtpClient smtp = new SmtpClient("smtp.server.address");
smtp.UseDefaultCredentials = true;
try
{
smtp.Send(mail);
}
catch (Exception ex)
{
//Error
}
}
Tags: .NeT, Mail, vs.net
Posted in .NeT 2008 | No Comments »
Aralık 28th, 2008
GAC Util de bulunan DLL’lerinizi assembly klasörünüzden başka bir klasöre çıkarmak, başka bir makinaya taşımak veya kopyalamak, normal klasörlerdeki benzer işlemlere nazaran çok daha zordur. Herhangi bir dll in üzerine sağ tıklarsanız şekildeki gibi bir ekranla karşılaşırsınız.

assembly
şekilde de görüldüğü üzere istediğiniz işlemleri bulamayabilirsiniz. CTRL+c ve CTRL+x i denediğinizi görür gibi oluyorum. Fakat bu işlem de işinize yaramayacaktır. Assembly klasörünü başka bir makinaya komple kopyalarsanız, bu işlemle de sadece o makinanın dll lerini kopyalamış olursunuz. Uzun lafın kısası bu iş kolayca olmuyor
Uzun Yol ile :
- Bir adet command prompt açın,
- c:\\Windows\Assembly\GAC veya c:\\Windows\Assembly\GAC_MSIL klasörlerinden birinde istediğiniz DLL dosyasını bulun
- Örneğin xyz.dll dosyasını, Gac_MSIL klasöründe bulduk. c:\\Windows\Assembly\GAC_MSIL\xyz\ dizinine gidin, Buradaki xyz dizini, dll adıyla birebir aynıdır.
- Daha sonra aşağıdaki şekildeki gibi xyz.dll dosyası Assembly klasöründe bulunur ve dosyanın özelliklerine gidilir.

- Yukarıdaki şekilde altı çizili versiyon ve public key token bilgilerindeki “versiyon__publickeytoken” şeklindeki bir alt klasöre geçilir. Resimdeki DLL için örnek verecek olursak klasör adı : 10.0.4504.0__31bf3856ad364e35 olacaktır.
- Son olarak da bu klasör içerisinde “copy xyz.dll c:\xyz.dll” komutula dosyamızı istediğimiz yere kopyalayabiliriz.
Gözünüz korktu di mi
Düşünün bunlardan en az 200 tanesinin yedeğini almak istediğinizi,
Çözüm Kısa yolumuz :
- Basit olarak hazırladığım şu kodu kullanabilirsiniz :
FileStream fs = new FileStream("c:\\dllisimleri.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string arguments;
string read = sr.ReadLine().Trim();
string read1 = sr.ReadLine().Trim();
while (read != null)
{
Console.WriteLine(read);
try
{
File.Copy("c:\\\\WINDOWS\\assembly\\Gac_MSIL\\" + read + "\\"+read1+"\\" + read + ".DLL", "C:\\\\DLL\\" + read + ".dll");
read = sr.ReadLine().Trim();
read1 = sr.ReadLine().Trim();
}
catch (Exception ex)
{
break;
}
}
- dllisimleri.txt dosyasının içeriğini de aşağıdaki gibi yaparsanız, istediğiniz dosyaları hemen alabilirsiniz;
xyz1
1.0.0.0__916a267ef328a0b9
xyz2
1.0.0.0__b715a15ad90d37db
xyz3
1.0.0.0__f4df43ff1813a7d4
xyz4
1.0.0.0__71e9bce111e9429c
buradaki xyz, kopyalamak istediğiniz dll dosyalarının ismi (.dll olmadan),
1.0.0.0__916a267ef328a0b9 bilgilerini de yukarıda anlattığım gibi hazırlayabilirsiniz.
- Başka bir kolaylık olarak Gac_MSIL klasörüne girdiğinizde dir /p, komutuyla command prompt dan tüm isimleri tarayabilirsiniz. Bu sayede tek tek kopyalamak zorunda kalmaz, rahatınıza bakarsınız…
Tags: command prompt, GAC, Global Assembly Cache, vs.net
Posted in .NeT 2008, Sharepoint | No Comments »