Tuesday, March 20, 2007

Assembly

FYI....




----------------------------------------------------------------DISCLAIMER---------------------------------------------------------
Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual 
or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under 
applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com 
and delete this EMAIL including any attachments

Saturday, March 17, 2007

Inviting my friends & family...

I'm extending a personal invitation to my friends and family to make a difference without spending a penny. To see your invitation, click the link below, or copy and paste it into your browser's address field:

http://friends.unicefusa.org/r/dc7f64e02591102aa29c

If you would prefer not to receive invitations from Friends.UNICEFUSA.org please click here

http://friends.unicefusa.org/?PC=UNSUB&rh=bb7af4ba789a3d0b853b460d0b6d6c2d&sender=as_prabahar@yahoo.com&tc=11

----------------------------------------------------------
UNICEF USA
PMB# 210
2440 16th Street
San Francisco, CA 94103-4211

Wednesday, March 14, 2007

Hi,
Please look into the details below and let me know if you need more details. I am not able to find that project but the material I refered was the same. Check it out
Forms Authentication - This is a cookie based authentication system where the username and passport is stored in a text file or a database. We will be focusing on this authentication model in this tutorial.

Let's start!

web.config file
The web.config file is an XML based configuration file which exists for every web application. The web.config file typical resides in the application root directory although it is possible to have multiple web.config files. If there is another web.config file placed in a directory below the application root, it will use those setting instead. The web.config file is where you will tell a web application to use either of the three types of autentication types.

Here we show you a basic example of what a web.config file looks like when it has be set to use form authentication. I will go in further detail and explain the tags.
<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="login.aspx" protection="All" timeout="30">
        <credentials passwordFormat="Clear">
          <user name="devhood" password="password"/>
          <user name="someguy" password="password"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
 
  <location path="admin/">
    <system.web>
      <authorization>
        <allow users="devhood" />
        <deny users="someguy" />
      </authorization>
    </system.web>
  </location>
  <location path="usersonly/">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <location path="public/">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>
 


The first tag in the web.config file is the
<configuration> tag. It is the base tag for the web.config file and will contain all your configuration settings in here. The first <system.web> tag specifies the settings that will apply to all the file in the same directory and the files below this directory.

<authentication> tag
Here we come to our first tag for authentication, which is thence called
<authentication>. We see that there is one attribute for this tag and it specifies the type of authentication that will be applied to this site. The choices are WindowsFormsPassportNone. This tutorial focuses on Forms authentication so that's what we got in there.

<forms> tag
Next we move to the
<forms> tag. This tag is unique to the Forms authentication mode and will specify things such as the loginUrl, the type of protection and the timeout of inactivity.
loginUrl attribute - when a user does not have the correct credentials to view a page, the user will be forwarded to this url.
protection attribute - there are four(4) types of protection modes, AllNoneEncryptionValidation. For simplicity sake, we're not going to go into this now, but if you want to know more, consult the MSDN documentation.
timeout attribute - this is an integer value specifying the number of minutes a user's cookie will be valid for. After this period of inactivity, the user will be forced to re-authenticate.

<credentials> tag
This is an optional section if you want to specify the username/password combinations in here. We will first discuss authentication with passwords in the web.config file and I will later highlight how you can store the usernames and passwords in a database or XML file. The credentials tag also has an attribute called passwordFormat. Your choices for password format are: ClearSHA1MD5. We still stick with clear text passwords for now and talk about encrypting the passwords further down.

<user> tag
This is also an optional tag (since it resides in the optional credentials tag). This tag is pretty straight forward, name attribute for the username and password attribute for the password.

<authorization> tag
Now that we have specified our authentication type and the user accounts, we have to specify how the authentication is to be applied to our website. We used the authorization tag to mark this. The autorization tag is placed between the system.web tags. In the example above, we see that the authorization tag contains the
<allow> tag. This allow tag will (as you can guess) specify which users have access to the website. And there is also a <deny> tag which will specify which users are denied access. The format of the users attributes is pretty simple. It's just a comma-delimited list of user names (i.e. users="jsmith, jdoe, blah"). There are also two special values that can be used in the users attribute. The first one is the * (asterix) character. This is used to denote "all users". So the example above allows access to all users. The second one is the ? (question mark) character. This is used to denote "anonymous" users. You can use this to deny anonymous access which will force users to authenticate before getting into some webpages (see the examples in the locations tags).

<location> tag
Now what happens when we want some parts of the website to be protected and others to not be protected? ASP.NET did think of that and handles that by the
<locations> tags. The location tag has one attribute, path, which is the path to apply a different set of security rules to. Inside the location tag, we have the system.web tag once again. The authorization tag is placed inside the system.web tag (just like the in first usage of <authorization>).

login.aspx file
Now that we have our web application all configured, we tackle the task of getting a user to authenticate themself by sending his/her username and password. In our
<forms> tag, we specified that the loginUrl attribute is login.aspx and here is an example of a login page:
<html>
<head>
    <title>Login</title>
    <script language="C#" runat="server">
        
        void Login_Click(Object sender, EventArgs e) {
            if (FormsAuthentication.Authenticate(username.Text, password.Text))
                FormsAuthentication.RedirectFromLoginPage(username.Text, true);
            else
                status.InnerHtml += "Invalid Login";
        }
        
    </script>
</head>
<body>
    <p class=title>Login</p> 
    <span id="status" class="text" runat="Server"/>
    <form runat="server">
    Username: <asp:textbox id=username cssclass="text" runat="Server"/><br />
    Password: <asp:textbox id=password textmode=Password cssclass="text" runat="Server"/><br />
    <asp:button id=login_button onclick="Login_Click" text="  Login  " cssclass="button" runat="Server"/>
    </form>
</body>
</html>
 


First, let's look at what the user sees. Our simple webpage example has two textboxes and a button. This webpage will be shown to the user anytime a request is made for a page and the user is does not have the proper credentials. This is a simple example, which you'll probably want to modify. Now we look at the code, this is where the authentication is done and the cookies are sent to the browser.

FormsAuthentication.Authenticate
The single login button on the webpage calls the Login_Click method when clicked. In this method, we use the FormsAuthentication.Authenticate(username,password) to get ASP.NET to check the credentials of the user. The parameters for this method is pretty straightforward and it just returns a boolean value.

FormsAuthentication.RedirectFromLoginPage
If the user is providing proper credentials, then we'll use the FormsAuthentication.RedirectFromLoginPage method. The parameters of this method are a username string and a boolean value. The first parameter is a username string and it is a name of the user for cookie authentication purposes. The value you put in there will be the user name that the client is associated with. It does not need to match the username used in the FormsAuthentication.Authenticate method but it is advisable to set the cookie to the username that was used to log in. The second parameter is a boolean value and it specifies whether or not a durable cookie (one that is saved across browser sessions) should be issued.
If you remember, when a user requests a page without proper authentication, they are redirected to the login page. After setting the cookie, the RedirectFromLoginPage will then send the user back to the page they came from.

There you go. You should have everything you need for a basic Forms based authentication system. Give it a try. If you want to extend the usage of authentication more, read on!
Thanks,
Thirumoorthy
private void btnLogin_Click(Object sender, EventArgs e)
{
// Initialize FormsAuthentication, for what it's worth
FormsAuthentication.Initialize();
// Create our connection and command objects
SqlConnection conn =
new SqlConnection("Data Source=localhost;Initial Catalog=web;");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT roles FROM web WHERE username=@username " +
"AND password=@password";
// Fill our parameters
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 64).Value =
Username.Value;
cmd.Parameters.Add("@password", SqlDbType.NVarChar, 128).Value =
FormsAuthentication.HashPasswordForStoringInConfigFile(
Password.Value, "md5"); // Or "sha1"
// Execute the command
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
// Create a new ticket used for authentication
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // Ticket version
Username.Value, // Username associated with ticket
DateTime.Now, // Date/time issued
DateTime.Now.AddMinutes(30), // Date/time to expire
true, // "true" for a persistent user cookie
reader.GetString(0), // User-data, in this case the roles
FormsAuthentication.FormsCookiePath);// Path cookie valid for
// Encrypt the cookie using the machine key for secure transport
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName, // Name of auth cookie
hash); // Hashed ticket
// Set the cookie's expiration time to the tickets expiration time
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
// Add the cookie to the list for outgoing response
Response.Cookies.Add(cookie);
// Redirect to requested URL, or homepage if no previous page
// requested
string returnUrl = Request.QueryString["ReturnUrl"];
if (returnUrl == null) returnUrl = "/";
// Don't call FormsAuthentication.RedirectFromLoginPage since it
// could
// replace the authentication ticket (cookie) we just added
Response.Redirect(returnUrl);
}
else
{
// Never tell the user if just the username is password is incorrect.
// That just gives them a place to start, once they've found one or
// the other is correct!
ErrorLabel = "Username / password incorrect. Please try again.";
ErrorLabel.Visible = true;
}
reader.Close();
conn.Close();
}


Regards,
Sasikumar
----------------------------------------------------------------DISCLAIMER---------------------------------------------------------Information transmitted by this EMAIL is proprietary to iGATE Group of Companies and is intended for use only by the individual or entity to whom it is addressed and may contain information that is privileged, confidential, or exempt from disclosure under applicable law. If you are not the intended recipient of this EMAIL immediately notify the sender at iGATE or mailadmin@igate.com and delete this EMAIL including any attachments




It's here! Your new message!
Get new email alerts with the free Yahoo! Toolbar.

Using Visual Sourcesafe

[The following tutorial was something I knocked up for myself and my work colleagues, when we developed a need for a source control system. Clearly VSS is not the best ever source control system, but the integration with Visual Studio is very useful.]
Visual SourceSafe (VSS) is a client/server application which acts as a storage system for files. A file stored in a VSS server is not available via the standard file system, instead, it must be accessed through the VSS client tools - the VSS windows client, the VSS command-line tool, or else some application which integrates with or emulates these client tools.
The following discussion refers to version 6.0d. It contains three types of section:
- Discussions of important concepts, headed like this.
- Walk-throughs of development scenarios, headed like this.
- Practical advice and best-practice, which...
...appears in shaded boxes.
VSS Database
A VSS Database is a single instance of a VSS server - it's the big black box into which files get placed। All commands to VSS are directed towards a particular VSS Database, and wach database maintains a SRCSAFE।INI file which contains configuration information.
VSS Project
A VSS Database is organised as a tree structure, with each of the nodes of the tree being a VSS Project. Each database contains a single root project, which can branch (to a depth of 15 nodes) into sub-projects.
VSS Projects are misleadingly named; instead they should be thought of as directly analagous to filesystem directories, being unordered collections of up to 8000 files of any type. To illustrate this, note that where an application's source-code is organised into files that live in subdirectories off the main directory, these subdirectories have to be mapped onto subprojects of the application's main project directory.
Don't confuse Visual Studio 'projects' with Visual Sourcesafe 'projects'. The latter are more like directories, or folders. In fact, if you just think Visual Sourcesafe 'folder' where the documentation says Visual Sourcesafe 'project', it will be easier to follow.
Working Folder
Because the files stored in VSS are not directly exposed as files, development work on these files takes place on local copies, which are first checked out of VSS, changed, then checked in again. While a file is checked out of VSS, it is can be locked to other developers, preventing file overwriting. VSS also retains historical information about a file's changes, so it is possible to extract and use old versions of a file, or roll back unsuccessful changes.
The folder in which a user manipulates his local copy of VSS project files is known as his 'working folder'. Each user will often have a distinct, local working folder for each VSS project, the details of which are held by the VSS client in its SS.INI file.
Each working folder also gets populated with a VSSVER.SCC file, which contains version information about the files in that folder. This allows VSS quickly to determine whether or not local files are synchronised with those stored in the VSS database.
If it is possible that the source-code for your application may contain hard-coded file paths, it is important that developers' working folders are at the same location. One way of doing this is to require each application's working folder to be at the root of a particular drive.
Building and Deployment
For non-web applications, their compilation and deployment is not under the control of VSS. The process that builds and deploys an application needn't integrate with VSS except to extract the latest instances of the files into a local directory where they can be manipulated as required.
For web applications, VSS does support a 'deploy' command. This copies a project's files onto a webserver, either directly or via FTP. However, for various reasons one might choose to use other methods of deployment with web applications.
Development Scenario: A
Let's consider the situation in which two developers, UserA and UserB have to cooperatively develop a non-web application, are coming completely fresh to VSS, and neither uses an IDE to create the application.
In this scenario we shall assume that each developer has a development machine, and that there is a development server which both of them can access. This gives us the following three computers: DevelopmentUserA; DevelopmentUserB; DevelopmentServer
The first thing that needs to be done is for a VSS database to be installed on DevelopmentServer, and the VSS client tools to be installed on the two development machines. It's useful to know that the installation of VSS on DevelopmentServer sets up a network share to the installation directory, and the VSS client tools are available for users to install from there (this has the additional benefit that the client tools are set up with the DevelopmentServer database as the default).
Next, the VSS database has to be set up with appropriate users. VSS handles its own authentication, rather than integrating with Windows authentication (though file access is still subject to NTFS permissions, of course), so it is necessary to set up individual accounts in VSS for the two users.
Next, the application development should start, and the application files should be added to the VSS database. We shall assume that these application files are stored on UserA's personal development computer.
The advice from those with experience of developing using VSS is that before adding files to the VSS database it is useful to progress the development to a stage where the general structure of the application and its source code is mostly settled. This is because the process of renaming and moving application files can raise various small problems.
As he is not using a VSS-integrated IDE, UserA will use the VSS client tool to add the application file to the database. To do this, he will need to point the client tool at the appropriate VSS database, which involves executing File -> Open SourceSafe Database and navigating to the SRCSAFE.INI file on DevelopmentServer.
After identifying the appropriate database, the following procedure will add all of the application source files to the database:
  • select the root project ($/)
  • execute File -> Add Files
  • navigate to the root directory of the application files (leaving the Relevant Masks at *.*) and press Add
  • add a descriptive comment, tick 'recursive', and press 'Add'
  • agree to make the source directory the 'working directory' for the current project.
Alternatively, the required files may be dragged and dropped from Windows Explorer to the appropriate VSS project. This takes you to point 4 above.
Once the files are in the VSS project, UserB will be able to view the project via the client tool. When he tries to access these files, he will be prompted to nominate a local working directory, and will be able to work on from that point.
Getting vs Checking Out
If you 'Get' a file / project (which you do using the client tools by right-clicking on the item and selecting 'Get Latest Version'), a read-only copy is placed into your working folder. Changes you make to this file cannot be subsequently uploaded to the VSS database.
On the other hand, when you 'Check out' a file / project (which you do analagously to 'getting' it), a writable copy is placed into your working folder. By default, this locks the file to other users, so that while they may 'Get' a copy of the file they cannot themselves check it out. Notice that when you check out (and check in), you have the option to add a comment. This is to help developers keep track of the file changes.
When either of these options is being applied to a project, the procedure can be applied recursively, so that it is applied to subprojects of the chosen project.
Checking In
When you've finished making changes to a checked-out file / project, then you can check it in again, which writes the file changes to the VSS database. This procedure is also effected in the client tools using a right-click menu.
By checking project files out and in using VSS, developers can avoid the situation in which one overwrites the changes made by another.
Note that there are a few restrictions on filenames in VSS; for instance, they cannot contain the dollar sign ($).
Development Scenario: B
Let's now consider the situation in which our two developers have to cooperatively develop a non-web application using Visual Studio .NET. In this case the VSS commands are integrated with the IDE.
The recommended structure for a .NET solution is to locate each project folder under the solution folder (which is not the default: often, you create a project along with its solution files, and the two go into the same directory). It is easy to get the recommended structure when creating the project – the important check box to tick when creating the solution / project is revealed by clicking More, and reads Create directory for solution. Otherwise, it is possible to set up a blank solution first and add the project into it.
Let's assume that the VSS database and the VSS users have been set up correctly. Then the process of uploading the Visual Studio solution and its projects (recall that VS projects are different kind of things to VSS projects) will go via:
File -> Source Control -> Add Solution To Source Control
or possibly
File -> Source Control -> Add Selected Projects To Source Control
This action will first prompt for a VSS database path and user credentials, then (recursively) add one or more project to the chosen VSS database. It is possible to see the files uploaded to the database via the VSS client tool (though we found it necessary to close and open up the tool in order to see the added project – the refresh command did not seem effective).
Initially, the project files are in their checked-in state, demonstrated by a small blue padlock on the left-hand side of their icons. As has been said previously, in this state the project files cannot be amended. So a user who wants to amend a file has either to explicitly check it out from Visual Studio using one of the many menus that support this functionality, or else just attempt to edit it, which brings up a dialogue that helps him check it out. The checked-out status of the file is indicated with a small red exclamation mark.
Note that the compiled project files do not get placed into the VSS database. The generation and storage of these executables lies outside the purview of VSS. Furthermore, there are a number of project files generated by Visual Studio which contain information specific to an individual user, and these are not added to VSS either; such files have the extensions .suo, .user or .webinfo.
This deals with how UserA adds a project to Visual Studio project to VSS, but then how does UserB then access this existing project? The required command is:
File -> Source Control -> Open From Source Control
This then brings up a VSS dialogue box with the contained projects. When the user selects the required project, he is asked to nominate a local directory, which is then set as the user's project working folder.
Historically, people have had problems when attempting to share solution files (*.sln). It may be easier for developers to maintain their own solution files, and just pull in the project from VSS.
SS.exe
VSS also makes available a command-line program SS.exe to support its various functions. The main use of this tool is to allow integration of VSS functions into applications which, unlike Visual Studio, aren't integrated with VSS out of the box.
According to the VSS documentation, SS.exe "is usually in the Win32 subfolder under the folder you choose in the setup program". In our case, it was found at:
[D:\Program Files\Microsoft Visual Studio\Common\VSS\win32\SS.exe]
If you are going to make extensive use of SS.exe, you'll probably want to add its containing directory to the environment PATH variable.
It may also be necessary / useful to add a couple of VSS-specific environment variables. The first, SSUSER, relates to VSS authentication. According to the documentation, when the command-line tool is used, VSS picks up the user's logon name and tries to authenticate using that (apparently ignoring the password, which makes you wonder why it's there at all). If the VSS username is not the same as one's NT logon name, however, one can put the VSS username in the SSUSER environment variable, and this is used instead (again, without any password).
Note that in order to access the VSS database in the first place, users will have to have an NT login with appropriate access permissions. The authentication provided by VSS lives on top of standard Windows security.
The second environment variable, SSDIR, is used to inform SS.exe which VSS database it should use. If you install the client tools via the executable provided on the server hosting the database, then this may be set automatically to point to that database. Otherwise, you will probably need to set it up automatically. In our case the setting looks like:
SSDIR = \\nwk-s-web\sourcesafe\
Development Scenario: C
Let's consider the situation in which two developers are using a basic development tool like Textpad to develop a non-web application. One way in which they could proceed is to use the VSS client tool to check files in and out. But a prefered alternative might be to write a macro (or possibly, for Textpad, a 'user defined tool') utilising SS.exe.
There is no point in going through exactly how this is done in Textpad. Instead we'll take a quick look at the kind of SS.exe commands that would be used.
First, we should note that the command-line tool is able to keep track of the 'current project' across commands (recall that for VSS a project is an element in a hierarchy). The following command sets this current project to 'tempProject.root' - note the dollar sign and the forward slash in the code (the latter of which indicates that tempProject.root is itself located at the database root).
ss cp $/tempProject.root
The following command checks out the file tempProject.sln from VSS:
ss Checkout $tempProject/tempProject.sln
There are two important points to note about this. Firstly, we are identifying the file we want by providing a virtual path. Because we previously set the current project to be equal to
$/tempProject.root
the virtual path resolves – in the familiar way – to
$/tempProject.root/tempProject/tempProject.sln
The second point is that the command does not place the checked out files in any working folder that might have previously been specified for this project. Instead it places the files in the folder in which the user executes the command.
We can also check out project files recursively, which creates the appropriate local subfolders. For example, the following command (which uses an absolute project path) checks out all of project and subproject files under tempProject.root:
ss Checkout $/tempProject -R
(For some reason, if you don't provide the project / file path in the Checkout command it asks you to enter one, but then takes the current project setting if you press enter.)
Checking files in works in an analagous way, but uses the 'Checkin' command, eg.
ss Checkin -R
Getting (recursively) the latest version of project files is equally straightforward:
ss Get -R
Multiple Checkouts
By default, if you check out a file then no other user can check it out until you've checked it back in: the file becomes locked to changes by anyone other than you. But the VSS administrator may enable 'multiple checkouts', which (fairly obviously) allows multiple users simultaneously to check out files.
So, what happens when UserA and UserB each checks out a file to his local working folder, each updates it independently, and then each tries in turn to check it back in? What needs to be avoided here, obviously, is UserA's changes being overwritten by UserB's check-in. What VSS tries to do is to merge each user's changes into the master copy. This is easiest if users have made small changes to different parts of the file. However, if users have each changed the same part of the file then merging is not possible, so VSS rejects UserB's check-in attempt, with appropriate information about the problem, and requires him to resolve the conflict.
The people that I've talked to about this, who have been using VSS from its earliest versions, recommend against using multiple checkouts. They claim that the merging algorithm isn't 100% solid, and that there are management benefits to knowing exactly who is currently working on a file. However, it may be that where development involves a large, geographically distributed group of people that communication problems would offset any problems with multiple checkouts.
Web Deployment Models for VS.NET
The MSDN article Web Projects and Source Control Integration in Visual Studio.NET provides three useful models for collaboratively developing websites (in VS.NET, but the models are useful beyond this). The models differ crucially in where each developer can run and test changes. In each case the deployment of the production website from a latest version is independent of the model.
- Isolated Development
In this model, all developers maintain a working copy of the website on their own development machine (which must therefore be running web server software). Latest versions of the code can be brought down from VSS in the familiar way. This is the recommended development model.
- Semi-Isolated Development
In this model, all developers share a single development web server, such that each has a distinct working folder on that server. While users share a webserver, therefore, each user maintains his own copy of the web application. Latest versions of the code are brought down from VSS to these working folders.
One of the disadvantages of this model is that the debugging process freezes all the applications on the website, so at most one user can test / debug at a time.
- Non-Isolated Development
In this model, there is a single development web server, but developers must access the master copy of the code using Frontpage Extensions. Here developers both share a webserver and share a copy of the web application (although they may be able to download the files to local machines, when the developers run and test changes they are using the same code). In order for there to be VSS integration, the website needs to be a Frontpage web project (which can be set to integrate with VSS).
Development Scenario: D
Let's look at the situation where our two developers are creating a simple ASP.NET website with VS.NET. I shall assume that they use the 'isolated' development model.
When you create a new ASP.NET web application in VS.NET, the default location for the project files lies somewhere under the root folder of the default website, which will probably be something like this:
C:\inetpub\wwwroot
On the other hand, the location of the solution file is likely to be elsewhere. But Microsoft recommends that the solution file should be stored in a folder above the root project folder. The way round this problem is to create a blank solution located at a certain folder, then map a folder below it as a new virtual IIS directory, and use this virtual directory as the location for the web application.
So, let us suppose that DevelopmentUser A starts off by creating a blank solution, locating it at:
C:\Solutions\TestSolution1
He then creates a new folder
C:\Solutions\TestSolution1\TestProject1
maps this to the IIS virtual directory
http://localhost/TestProject1
and creates the new project TestProject1, locating it in this virtual directory.
To add this to VSS, DevelopmentUserA uses the standard command:
File -> Source Control -> Add Solution To Source Control
DevelopmentUserA ignores the warning that he will no longer be able to open the project using FrontPage Web access - accessing web projects using File Access is preferable where this is possible (basically this means that VS.NET just accesses the project files using the file system, rather than getting them from IIS via Frontpage Extensions). In the next dialogue boxes he enters the appropriate credentials to place the solution in the VSS database with the appropriate name, and the job is done.
According to the Microsoft document Team Development with Visual Studio.NET and Visual SourceSafe, the project structure in VSS should mirror the file structure in the working folder. But VS.NET seems very keen to place solution files in VSS projects parallel to those containing VS.NET project files. It is possible to manually move these folders in VSS, and then tell VS.NET about the move, but it's not clear why this is important.
Web Projects
VSS distinguishes between standard and 'web' projects. For the latter it has introduced – albeit in a fairly half-hearted way – some specific tools. So, for instance, there is a facility to create a site map, hyperlink checking, and some keyword expansion. Furthermore, there is also a 'deploy' command, which seems just to copy all the project files to location via FTP.
Sharing and Branching Files
It is possible to 'share' files between projects, so that there is a single master copy which appears in different places in the VSS project tree structure. Changes made to this copy from within one project will be seen in the other projects that share the file.
Right-clicking on a folder within VSS Explorer, or using the File -> Source Control menu VS.NET brings up the Share dialogue, from which one can choose files to share.
I have been informed that sharing of files can cause problems. In particular, the following scenario: a file is shared between projects A and B. It is checked out as part of project A but then by mistake checked back in as part of project B. (Exactly what problems this caused was left unspecified by my correspondant, but they seemed severe enough to warrant a warning).
Rolling Back
VSS maintains a history of changes to files, so that it is possible to roll back files to previous versions. From VSS Explorer you right-click the file and choose 'History', from which you can see a history of changes to the file along with possible actions. From VS.NET you use the File -> Source Control menu.
It doesn't look like it's possible to roll a whole project back to a previously known good point, however.
By default, rolling back a file erases all of the file history past that point. However, it is possible to perform a 'virtual rollback', in which the file history is not deleted.
Where files are shared between projects, rolling back a file from one project will result in the files branching.
Showing Differences
The VSS client tool is able to display the differences between different versions of text files, which can be useful for debugging purposes.
Pinning
It is possible to pin files so that they can't be changed (at least without first being unpinned).
Labelling
As well as commenting actions, users can add labels to files or projects. In the VSS client tool this is effected by right clicking or using File -> Label…
Labelling files is useful for marking certain versions as important. For instance, a project might be labelled as 'Release Candidate 1', and if one wanted to extract that version at a later date, then one could look for the label. Note that when a label is applied to an object, a separate entry is created within the history of that object.
Cloaking
Where an operation like 'Get' is used recursively, the operation is applied to all of the subprojects (in this case we can say that it is applied 'indirectly'). If a user wishes to turn this behaviour off for his own recursive operations, he can mark the subproject as 'cloaked'. Subprojects so marked won't have operations applied to them indirectly. They may still be usable directly, however.
Shadow Folders
A shadow folder is a nominated file directory which is kept up to date with copies of the most recent files in a VSS project, the idea being that this folder can be used to compile latest versions of code. Unfortunately, however, the updating process is not recursive.

Automation API

Although Microsoft doesn't advertise it very strongly, VSS can be Automated by referencing the ssapi.dll. There is a pretty full paper on automating VSS using VB 6.0.

MIME Extension for IIS 4.0 and 5.0

Extension
Type/sub-type
IIS 4.0
IIS 5.0
*
application/octet-stream
Yes
Yes
323
text/h323
No
Yes
acx
application/internet-property-stream
No
Yes
ai
application/postscript
Yes
Yes
aif
audio/x-aiff
Yes
Yes
aifc
audio/x-aiff
Yes
Yes
aiff
audio/x-aiff
Yes
Yes
asf
video/x-ms-asf
No
Yes
asr
video/x-ms-asf
No
Yes
asx
video/x-ms-asf
No
Yes
au
audio/basic
Yes
Yes
avi
video/x-msvideo
Yes
Yes
axs
application/olescript
No
Yes
bas
text/plain
Yes
Yes
bcpio
application/x-bcpio
Yes
Yes
bin
application/octet-stream
Yes
Yes
bmp
image/bmp
Yes
Yes
c
text/plain
Yes
Yes
cat
application/vnd.ms-pkiseccat
No
Yes
cdf
application/x-cdf
No
Yes
cer
application/x-x509-ca-cert
No
Yes
class
application/octet-stream
Yes
Yes
clp
application/x-msclip
Yes
Yes
cmx
image/x-cmx
Yes
Yes
cod
image/cis-cod
Yes
Yes
cpio
application/x-cpio
Yes
Yes
crd
application/x-mscardfile
Yes
Yes
crl
application/pkix-crl
No
Yes
crt
application/x-x509-ca-cert
No
Yes
csh
application/x-csh
Yes
Yes
css
text/css
No
Yes
dcr
application/x-director
Yes
Yes
der
application/x-x509-ca-cert
No
Yes
dir
application/x-director
Yes
Yes
dll
application/x-msdownload
No
Yes
dms
application/octet-stream
Yes
Yes
doc
application/msword
Yes
Yes
dot
application/msword
Yes
Yes
dvi
application/x-dvi
Yes
Yes
dxr
application/x-director
Yes
Yes
eps
application/postscript
Yes
Yes
etx
text/x-setext
Yes
Yes
evy
application/envoy
Yes
Yes
exe
application/octet-stream
Yes
Yes
fif
application/fractals
No
Yes
flr
x-world/x-vrml
Yes
Yes
gif
image/gif
Yes
Yes
gtar
application/x-gtar
Yes
Yes
gz
application/x-gzip
No
Yes
h
text/plain
Yes
Yes
hdf
application/x-hdf
Yes
Yes
hlp
application/winhlp
Yes
Yes
hqx
application/mac-binhex40
Yes
Yes
hta
application/hta
No
Yes
htc
text/x-component
No
Yes
htm
text/html
Yes
Yes
html
text/html
Yes
Yes
htt
text/webviewhtml
No
Yes
ico
image/x-icon
No
Yes
ief
image/ief
Yes
Yes
iii
application/x-iphone
No
Yes
ins
application/x-internet-signup
No
Yes
isp
application/x-internet-signup
No
Yes
jfif
image/pipeg
No
Yes
jpe
image/jpeg
Yes
Yes
jpeg
image/jpeg
Yes
Yes
jpg
image/jpeg
Yes
Yes
js
application/x-javascript
Yes
Yes
latex
application/x-latex
Yes
Yes
lha
application/octet-stream
Yes
Yes
lsf
video/x-la-asf
No
Yes
lsx
video/x-la-asf
No
Yes
lzh
application/octet-stream
Yes
Yes
m13
application/x-msmediaview
Yes
Yes
m14
application/x-msmediaview
Yes
Yes
m3u
audio/x-mpegurl
No
Yes
man
application/x-troff-man
Yes
Yes
mdb
application/x-msaccess
Yes
Yes
me
application/x-troff-me
Yes
Yes
mht
message/rfc822
No
Yes
mhtml
message/rfc822
No
Yes
mid
audio/mid
No
Yes
mny
application/x-msmoney
Yes
Yes
mov
video/quicktime
Yes
Yes
movie
video/x-sgi-movie
Yes
Yes
mp2
video/mpeg
Yes
Yes
mp3
audio/mpeg
No
Yes
mpa
video/mpeg
Yes
Yes
mpe
video/mpeg
Yes
Yes
mpeg
video/mpeg
Yes
Yes
mpg
video/mpeg
Yes
Yes
mpp
application/vnd.ms-project
Yes
Yes
mpv2
video/mpeg
Yes
Yes
ms
application/x-troff-ms
Yes
Yes
mvb
application/x-msmediaview
Yes
Yes
nws
message/rfc822
No
Yes
oda
application/oda
Yes
Yes
p10
application/pkcs10
No
Yes
p12
application/x-pkcs12
No
Yes
p7b
application/x-pkcs7-certificates
No
Yes
p7c
application/x-pkcs7-mime
No
Yes
p7m
application/x-pkcs7-mime
No
Yes
p7r
application/x-pkcs7-certreqresp
No
Yes
p7s
application/x-pkcs7-signature
No
Yes
pbm
image/x-portable-bitmap
Yes
Yes
pdf
application/pdf
Yes
Yes
pfx
application/x-pkcs12
No
Yes
pgm
image/x-portable-graymap
Yes
Yes
pko
application/ynd.ms-pkipko
No
Yes
pma
application/x-perfmon
Yes
Yes
pmc
application/x-perfmon
Yes
Yes
pml
application/x-perfmon
Yes
Yes
pmr
application/x-perfmon
Yes
Yes
pmw
application/x-perfmon
Yes
Yes
pnm
image/x-portable-anymap
Yes
Yes
pot,
application/vnd.ms-powerpoint
Yes
Yes
ppm
image/x-portable-pixmap
Yes
Yes
pps
application/vnd.ms-powerpoint
Yes
Yes
ppt
application/vnd.ms-powerpoint
Yes
Yes
prf
application/pics-rules
No
Yes
ps
application/postscript
Yes
Yes
pub
application/x-mspublisher
Yes
Yes
qt
video/quicktime
Yes
Yes
ra
audio/x-pn-realaudio
Yes
Yes
ram
audio/x-pn-realaudio
Yes
Yes
ras
image/x-cmu-raster
Yes
Yes
rgb
image/x-rgb
Yes
Yes
rmi
audio/mid
No
Yes
roff
application/x-troff
Yes
Yes
rtf
application/rtf
Yes
Yes
rtx
text/richtext
Yes
Yes
scd
application/x-msschedule
Yes
Yes
sct
text/scriptlet
No
Yes
setpay
application/set-payment-initiation
No
Yes
setreg
application/set-registration-initiation
No
Yes
sh
application/x-sh
Yes
Yes
shar
application/x-shar
Yes
Yes
sit
application/x-stuffit
No
Yes
snd
audio/basic
Yes
Yes
spc
application/x-pkcs7-certificates
No
Yes
spl
application/futuresplash
No
Yes
src
application/x-wais-source
Yes
Yes
sst
application/vnd.ms-pkicertstore
No
Yes
stl
application/vnd.ms-pkistl
No
Yes
stm
text/html
Yes
Yes
sv4cpio
application/x-sv4cpio
Yes
Yes
sv4crc
application/x-sv4crc
Yes
Yes
t
application/x-troff
Yes
Yes
tar
application/x-tar
Yes
Yes
tcl
application/x-tcl
Yes
Yes
tex
application/x-tex
Yes
Yes
texi
application/x-texinfo
Yes
Yes
texinfo
application/x-texinfo
Yes
Yes
tgz
application/x-compressed
No
Yes
tif
image/tiff
Yes
Yes
tiff
image/tiff
Yes
Yes
tr
application/x-troff
Yes
Yes
trm
application/x-msterminal
Yes
Yes
tsv
text/tab-separated-values
Yes
Yes
txt
text/plain
Yes
Yes
uls
text/iuls
No
Yes
ustar
application/x-ustar
Yes
Yes
vcf
text/x-vcard
No
Yes
vrml
x-world/x-vrml
Yes
Yes
wav
audio/x-wav
Yes
Yes
wcm
application/vnd.ms-works
Yes
Yes
wdb
application/vnd.ms-works
Yes
Yes
wks
application/vnd.ms-works
Yes
Yes
wmf
application/x-msmetafile
Yes
Yes
wps
application/vnd.ms-works
Yes
Yes
wri
application/x-mswrite
Yes
Yes
wrl
x-world/x-vrml
Yes
Yes
wrz
x-world/x-vrml
Yes
Yes
xaf
x-world/x-vrml
Yes
Yes
xbm
image/x-xbitmap
Yes
Yes
xla
application/vnd.ms-excel
Yes
Yes
xlc
application/vnd.ms-excel
Yes
Yes
xlm
application/vnd.ms-excel
Yes
Yes
xls
application/vnd.ms-excel
Yes
Yes
xlt
application/vnd.ms-excel
Yes
Yes
xlw
application/vnd.ms-excel
Yes
Yes
xof
x-world/x-vrml
Yes
Yes
xpm
image/x-xpixmap
Yes
Yes
xwd
image/x-xwindowdump
Yes
Yes
z
application/x-compress
No
Yes
zip
application/zip
Yes
Yes
 


Samiyappan Prabakar ,Mobile : +971 50 9042741
 
 


8:00? 8:25? 8:40? Find a flick in no time
with theYahoo! Search movie showtime shortcut.