Tags: , , | Categories: IDE, SSS (FAQ), Tip, UI, Web Uygulaması Posted by okutbay on 01.10.2011 02:16 | Yorumlar (0)

Geliştirdiğimiz web uygulamasını belirli aralıklarla düzenli olarak bir sunucuya göndermemiz gerekiyorsa her seferinde tüm dosyaları sunucuya yüklemeye çalışmak zaman kaybettirebilir...

Son güncelleme zamanından önce değiştirilmiş dosyaları bulmak için dosya arama fonksiyonunu kullanabilirsiniz. Bulunan dosyaları seçil sildiğinizde elinizde sadece son guncelleme zamanindan bu yana degisen dosyalar kalacaktır.

Windows 7 de arama bir miktar farklı olduğundan belirli bir tarihten onceki dosyalari bulmak için arama kutucuğunua "datemodified:<‎18.‎05.‎2011" yazabilirsiniz.

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 29.09.2009 21:46 | Yorumlar (0)

You can add the <location> element with the “inheritInChildApplications” attribute to the root web.config. This attribute will prevent child applications inherit some specified configuration from the root web.config.

The attribute must be placed in the <configuration> section of the web.config. It looks like this:
<location path="." inheritInChildApplications="false">
<system.web>
 <!--
     ……
     Your settings

  -->
</system.web >
</location>

Referance:

SectionInformation.InheritInChildApplications Property

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Tip, Web Uygulaması Posted by okutbay on 09.09.2009 10:26 | Yorumlar (0)

You can use using statement to inculde different namespaces in you code behind file. But still you can't call methods from classes that live in other namespaces (Different from you page class namespace) from you content pages (.aspx).

To make this work you must use import namespace directive after you page directive.

    1 <%@ Import="" Namespace="ICF.Common" %>

This can be a hard tast if you have a lot of pages. So you can define your namespaces in you web.config file and call your business class methods in your .aspx pages whenever you want. 

    1 <?xml version="1.0"?>

    2 <configuration>

    3     <system.web>

    4         <pages>

    5             <namespaces>

    6                 <add namespace="ICF" />

    7                 <add namespace="ICF.Common"/>

    8             </namespaces>

    9         </pages>

   10     </system.web>

   11 </configuration>

Happy coding...

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 08.09.2009 09:27 | Yorumlar (0)

When you are using the SiteMapPath control page Urls with the querystrings, pages don't show the control. Because url can't be matched with url in your Web.Sitemap file.

To handle this situation, a little web.sitemap file trick is enough. Write the static part of your Url and define the dynamic querystring parameters at "reliantOn" attribute.

Sample Web.sitemap node definiton:

    1 <siteMapNode url="~/a.aspx?p=add" title="ABC" reliantOn="Id" />

Happy codings...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Programlama, SSS (FAQ), Tip, Veritabanı Posted by okutbay on 03.09.2009 11:54 | Yorumlar (0)

When you are developing application you may need to store timespan database. (Assuming you are using Sql Server 2005)

TimeSpan.TotalSeconds can be used to store. This returns a double. And maps to decimal data type of the sql server. For reverse action to get the time span you can use TimeSpan.FromSeconds method. This will give you the nearest millisecond value of the stored data.

But if you need accuracy you can use TimeSpan.Ticks method is suitable for you. This returns Int64 (long) and maps to bigint data type for to store in db.You can convert it to TimeSpan with the TimeSpan.FromTicks method.

"Using Ticks more accurate then FromSeconds"

Sample (.aspx page):

 

    1 string startTime = "13:46:33.5268767";

    2 string endTime = "13:47:03.1988761";

    3 DateTime startDate = Convert.ToDateTime(startTime);

    4 DateTime endDate = Convert.ToDateTime(endTime);

    5 

    6 Response.Write(string.Format("Start Date : {0}<br/>", startDate));

    7 Response.Write(string.Format("End Date : {0}<br/>", endDate));

    8 

    9 

   10 TimeSpan timeSpan = endDate - startDate;

   11 double timeSpanValue1 = timeSpan.TotalSeconds;

   12 long timeSpanValue2 = timeSpan.Ticks;

   13 

   14 Response.Write(string.Format("From Seconds : {0} (Rounded To Nearest Millisecond)<br/>",TimeSpan.FromSeconds(timeSpanValue1)));

   15 Response.Write(string.Format("From Ticks : {0} (More Accurate)<br/>", TimeSpan.FromTicks(timeSpanValue2)));

Happy coding...

 

 

 

2 kişi tarafından 2.5 olarak değerlendirildi

  • Currently 2,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Web Uygulaması Posted by okutbay on 24.08.2009 10:10 | Yorumlar (0)

We are developing a new ASP.NET web application in Visual studio 2008. Last week we've decided to use HttpHandlers instead of some web pages. And as we used to do in Visual Studio 2005 web sites created an App_code folder after that we created new classes under that folder.

Then we noticed that there is intellisense problem with these files. Also we noticed that there is a namespace problem with these classes.

When you add new class to app_code folder VS2008 names the class like this: RootNameSpace.App_Code.Class1. But object browser doesn't include any definition about App_Code namespace and sub classes.

 

figure 1: No namespace for ICFWeb.App_Code

 

  Then I decided to check the properties of the classes. Right clicked a class under the App_code folder. And select its properties.

figure 2: No intellisense and color highlighting for editor.

 

When we looked at the properties. We saw build action for class is set to "Content". Problems are fixed after i changed that property to "Compile"  

figure 3: Change build action from "Content" to "Compile"

 

After i searched the google for source of the problem. Problem is the app_code folder is for the web sites. There is no use of that folder for the web applications. Also app_code folder is not included in the "Add ASP.NET Folder" context menu of the solution explorer when you want to add App_code folder to your web application project.

Happy coding... 

 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , | Categories: Security, Web Uygulaması Posted by okutbay on 18.08.2009 13:51 | Yorumlar (0)

Web uygulamaları Internet üzerinden anonim (kimliği belirsiz) ziyaretçiler tarafından kullanılırlar. Kullanıcılar hakkında bilgi toplamak ya da sadece belirli kaynaklara erişimlerini sağlamak istiyorsak öncelikle onların kim olduğunu belirli bir kaynaktan sorgulayıp, doğru kişi olduklarını onaylamamız gerekir. Bu işleme "Kimliklendirme (Authentication)" denir.

Web uygulamalarında farklı kimliklendirme yöntemleri olsada Internet üzerinden erişilen uygulamalar için uygun olan kimliklendirme yöntemi "Forms" yöntemidir. (Bu noktadan sonra Forms Authentication olarak anılacaktır.)

Forms authentication kullanımını aktif hale getirmek için web uygulamanızın ayar dosyası Web.Config içinde <authentication mode="Forms" /> satırı yer almalıdır.

1 <configuration>
2 <system.web>
3 <authentication mode="Forms"/>
4 </system.web>
5 </configuration>

Aktif edilen Forms authentication için giriş sayfası, varsayılan sayfa, zaman aşımı, çerez adı gibi ayarlar yapılmalıdır. Bu noktada yapılabilecek ayalar bu kadar değildir. Detaylı bilgi için makalenin sonunda yer alan makaleye göz atmanızı öneririm.

1 <authentication mode="Forms">
2 <forms loginUrl="login.aspx"
3 defaultUrl="default.aspx"
4 timeout="30"
5 name=".ASPXAUTHWEBLEBICI"/>
6 </authentication>

Böylece FormsAuthenticationModule sınıfının gerektirdiği asgari ayarları yapmış oluruz. Artık kimliklendirme aşamasını takip eden "Yetkilendirme" (Authorization) aşaması için gerekli ayarları yapmaya geçebiliriz.

Yetkilendirme için web.config dosyamızda authorization elemanını kullanarak UrlAuthorizationModule sınıfını ayarlayabiliriz.

1 <system.web>

2 <authorization>

3 <deny users="?" />

4 </authorization>

5 </system.web>

Uygulamamızın ana ayar dosyasında yapılan bu ayarla birlikte uygulamamıza gelen anonim kullanıcıların kaynaklara erişimi reddedilerek kimliklendirme ayarında belirtilen giriş sayfasına kimliklendirme işlemi için gönderilmeleri sağlanacaktır. Burada soru işareti anonim (kimliksiz) kullanıcıları temsil ederken tüm kullanıcıları temsil etmek için "*" değeri kullanılabilir. Unutulmaması gereken noktalardan biri ise ayar dosyalarının yukarıdan aşağıya doğru işlendiğidir. Örneğin deny satırı üzerine yazacağınız <allow users="*" /> ayarı tüm kullanıcların siteye erişmesi anlamına gelecektir...

Önemli Not: Authentication ayarı sadece uygulamamızın ana klasöründe bulunan web.config dosyasında yapılabilirken authorization ayarı ana klasör veya alt klasörler için oluşturulacak web.config dosyalarında bulundukları klasörü kapsayacak şekilde yapılabilir. Yani uygulamanız anonim erişime açıkken sadece belli bir klasörü yetkili erişim için ayarlayabilirsiniz.

Belirlenen giriş sayfasına gelen kullanıcılar belirlenmiş olan veri kaynağından kimliklerini onayladıktan sonra ilgili kaynağa girmeye yetkiliyseler bu kaynağa erişebilirler. Aksi halde tekrar giriş sayfasına geri gönderilirler ve kaynağa erişmeye yetkili bir kullanıcı bilgisi ise giriş yapmaları beklenir. Bizim senaryomuzda kimlik doğrulamasını geçen tüm kullanıcılar kaynaklara erişmeye yetkilidir. Farklı kişi ya da gruplar için erişim deny ya da allow elemanları users ya da roles öznitelikleri ile kullanılabilir...

Bu noktada bazı kararlar vermeniz gerekecektir. Ama hangi kararları alırsanız alın temelde yapacağınız işlemler aynıdır. Kullanıcı bilgilerini web.config de depolayabilir ya da bir veritabanı tablosu, web servis gibi bir kaynakla kontrol edebilirsiniz. Her halukarda kullanıcı adı ve şifresini kullanıcıdan girmesini isteyeceğiniz bir sayfanız olacaktır. Kullanıcı bilgileri girip, giriş butonuna tıklayacak ve siz arka tarafta hangi mekanizmayı kullanıyor olursanız olun yapacağınız işlem bu kullanıcının varolup olmadığına bakmak, şifresinin uyup uymadığını kontrol etmek, doğru ise siteye girişine izin vermek yanlış ise tekrar giriş sayfasına yönlendirmek olacaktır.

Kısıtlanmış bir kaynağa erişilmek istendiği zaman yapılan ayarlar gereği kullanıcı dönüş adresi ile birlikte login sayfasına yönlendirilecektir.

Referanslar:

Explained: Forms Authentication in ASP.NET 2.0 (patterns & practices Developer Center)

How To: Use Forms Authentication with SQL Server in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998317.aspx

How To: Use Membership in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998347.aspx

How To: Use Role Manager in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998314.aspx

1 kişi tarafından 3.0 olarak değerlendirildi

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Web Uygulaması Posted by okutbay on 10.08.2009 14:29 | Yorumlar (0)

You get this error, when you use neutral culture name to set culture of the application.

    1 System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("tr");

    2 System.Threading.Thread.CurrentThread.CurrentCulture = ci;

    3 System.Threading.Thread.CurrentThread.CurrentUICulture = ci;

To prevent this error you can use explicit culture name like "tr-TR" or use the code below:

    1 System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CreateSpecificCulture("tr");

 Happy coding.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Web Uygulaması Posted by okutbay on 06.08.2009 17:30 | Yorumlar (0)

In ASP.NET web application you can develop user controls and custom server controls to increase your productivity and decrease code repetition. To use these user controls at your web pages you can register like this:

<%@ Register Src="Controls/somecontrol.ascx" TagName="SomeControl" TagPrefix="myPrefix" %>

And use like this:

<html>
<body>
    
<form id="form1" runat="server">
        
<myPrefix:header ID="SomeControl1" runat="server" />
    </
form>
</body>
</html>

The registration step can be a bit pain if you have too much pages. Also its hard to change the name of the .ascx file name if you registered the control at too much pages.

To avoid these you can try to register your controls at your web.config file in more managable way.

<?xml version="1.0"?>
<configuration>
 
<system.web>
   
<pages>
      
<controls>
        
<add tagPrefix="myPrefix" src="~/Controls/somecontrol.ascx" tagName="S
omeControl"/>
        <
add tagPrefix="
myPrefix" src="~/Controls/othercontrol.ascx" tagName="OtherControl"/>
        <
add tagPrefix="CustomControl" assembly="CustomControlAssembly"/>
      </
controls>
    
</pages>
 
</system.web>
</configuration> 

So you can still use your controls in the same way but you can manage them at one location. And you can easily copy controls from one page to the other.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Programlama, Web Uygulaması Posted by okutbay on 19.06.2009 16:21 | Yorumlar (0)

Bir süredir blogengine.net kullanıyorum. Wordpressle tabiki kıyaslanamaz ama .NET muadilleri arasında fena bir yerde değil.

Arkadaşlarımın yazılım ile ilgili tecrübelerini paylaştıkları sitelere link vermek için BlogRoll extensionı ana sayfaya ekledim ve bir kaç link tanımladım.

Herşey çok güzeldi. Ta ki bir linke tıklayana kadar. Tıkladım ve link benim sayfam ile aynı pencerede açıldı. Hemen panik yapmadım. "Sanırım yeni sayfada aç demeyi unuttum" diyerek yönetim  sayfasına gittim. Ama ne yazıkki böyle bir ayar olmadığını görünce bir miktar üzüldüm... Tabi bu dünyanın sonu değildi. Open source bunun için vardı. Hiç açmayacaksak nasıl open source olacaktı değil mi?

App_Code/Controls dizini altında bulunan Blogroll.cs dosyasını açtım ve kodu biraz inceledim. Kısa bir gözatmadan sonra şu kodlara ulaştım... 

  135 HtmlAnchor webAnchor = new HtmlAnchor();

  136 webAnchor.HRef = item.WebsiteUrl;

  137 webAnchor.InnerHtml = EnsureLength(item.Name);

Tabi bu noktada iki şey yapılabilirdi... Gidip bu webAnchor class ı neymiş diye bakabilirdim. Ya da yazılımcılık hislerime güvenerek ufak bir kumar oynayabilirdim. Ve kumar oynadım. 

  135 HtmlAnchor webAnchor = new HtmlAnchor();

  136 webAnchor.HRef = item.WebsiteUrl;

  137 webAnchor.Target = "_blank";

  138 webAnchor.InnerHtml = EnsureLength(item.Name);

Her halde bu sınıfı yazan yazılcı bu özelliği unutacak kadar eşşek olamazdı. Allah'tan olmamış da... Artık blogroll linlerim yeni sayfada açıyor... 

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5