VS 2008: Przekonwertowanie projektu typu Web Site na Web Application

by Piotrosz 30. January 2010
Zauważyłem ciekawą rzecz związaną z Visual Studio 2008. Chciałem przekonwertować sobie aplikację typu Web Site na Web Application i okazuje się, że w menu w Solution Explorer nie ma takiej opcji (a w Visual Studio 2005 SP1 to było!):

Ale okazuje się, że jest na to sposób! Należy stworzyć sobie nowy projekt typu Web Application, przekopiować wszystkie pliki w aplikacji typu Web Site i dopiero wtedy wybrać z menu Convert To Web Application:

Jeśli to kogoś interesuje, to na przykład pod tym linkiem można znaleźć porównanie tych dwóch typów projektów.

PopupControl: zamknięcie za pomocą JavaScript

by Piotrosz 28. January 2010
Sposób na schowanie kontrolki PopupControlExtender z AJAX Control Toolkit za pomocą JavaScript. Zaleta takiego sposobu schowania warstwy (popupa) jest taka, że nie spowoduje PostBacka.
AjaxControlToolkit.PopupControlBehavior.__VisiblePopup.hidePopup();
Na przykład:
<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:TextBox runat="server" ID="txt1" />
        <asp:Panel runat="server" ID="pnl1" Width="200" Height="200" BackColor="Orange">
            <asp:LinkButton runat="server" ID="lbClose" Text="Zamknij" 
OnClientClick="AjaxControlToolkit.PopupControlBehavior.__VisiblePopup.hidePopup(); return false;" />
        </asp:Panel>
        <act:PopupControlExtender ID="PopEx" runat="server" 
            TargetControlID="txt1" PopupControlID="pnl1"
            Position="Bottom" />
    </div>
</form>

IIS Manager - gdzie jest ASP.NET 3.5?

by Piotrosz 22. January 2010
Ostatnio przeraziłem się, ponieważ po zainstalowaniu .NET Framework 3.5 na serwerze oczekiwałem, ze pojawi się możliwość wybrania ASP.NET 3.5 w IIS Managerze:


Okazuje się, że nie ma się czego bać, ponieważ .NET Framework 3.5 jest jedynie rozszerzeniem .NET Framework 2.0 i z punktu widzenia IIS nic się nie zmieniło.

A tutaj pewnien Mistrz pisze o tym bardziej szczegółowo: http://blogs.msdn.com/vijaysk/archive/2008/03/20/running-asp-net-3-5-on-iis.aspx

Odczytywanie zasobów globalnych ASP.NET w projekcie typu Class Library

by Piotrosz 22. January 2010
Zastanawiałem się w jaki sposób dostać się do zasobów globalnych aplikacji ASP.NET z poziomu klasy w projekcie typu class library. Okazuje się, że jest na to sposób:
HttpContext.GetGlobalResourceObject("NazwaZasobuGlobalnego", "NazwaKlucza"); 
Jeśli nasza biblioteka ta będzie używana nie tylko w aplikacji ASP.NET, to pewnie też warto sprawdzić czy przypadkiem HttpContext.Current nie jest null.
A tutaj pan Robert zaproponował prosty wrapper:
http://www.williablog.net/williablog/post/2008/11/20/Accessing-Global-Resource-Files-from-a-Class-Library-in-ASPNET.aspx

AnkhSVN: czyszczenie authentication cache

by Piotrosz 14. January 2010
AnkhSVN (http://ankhsvn.open.collab.net/) to plugin do Visual Studio, który jest klientem Subversion i pozwala na wykonywanie podstawowych operacji na repozytorium w trybie graficznym i do tego bez opuszczania Visual Studio.
Zapamiętuje on dane użytkownika SVN w cache na dysku. Jest to bardzo wygodne, bo nie trzeba za każdym razem wpisywać tych danych, jednak pojawia się problem, gdy trzeba zmienić hasło lub użytkownika.

Okazuje się, że są 2 sposoby na wyczyszczenie zapamiętanych nazwy i hasła użytkownika.
1) W Visual Studio wybieramy Tools->Options i potem Source Control->Subversion Environment:



Klikamy na guzik Edit przy Authentication Cache, a potem usuwamy zapamiętane dane:



Drugi sposób (w starszych wersjach AnkhSvn jedyny) to ręczne usunięcie plików z następujących katalogów:
%APPDATA%\Subversion\auth\svn.simple
%APPDATA%\Subversion\auth\svn.ssl.server
Informację o tym znalazłem na tej stronie: http://www.zuhaib.in/how-to/clearing-ankhsvn-saved-username-password-authentication-data.

W obu przypadkach, po usunięciu informacji z cache AnkhSvn ponownie pyta się o użytkownika i hasło:

Korzystanie z SPSite i SPWeb w WSS

by Piotrosz 8. January 2010
Obiekty Microsoft.SharePoint.SPSite i Microsoft.SharePoint.SPWeb korzystają z niezażądzanego kodu (unmanaged code) i mogą długo pozostawać w pamięci. Dlatego zawsze należy jawnie wywołać na tych obiektach metodę Dispose() lub zamknąć je wewnątrz using, co jak wiadomo również spowoduje wywołanie Dispose():
using (SPSite site = new SPSite(Url))
{    
    using(SPWeb web = site.OpenWeb())    
    {        
        web.AllowUnsafeUpdates = true;   
        // ...    
    }
}
Więcej informacji o obiektach, które implementują interfejs IDisposable ("disposable objects") w WSS można znaleźć tutaj: http://msdn.microsoft.com/en-us/library/aa973248.aspx.

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen