General Questions on ASP.NET 2.0
Do I need IIS to run Web applications?
If you are using Visual Studio, you can use the ASP.NET Development Server built into Visual Studio to test your pages. The server functions as a local Web server, running ASP.NET Web pages in a manner virtually identical to how they run in IIS. To deploy a Web application, you need to copy it to a computer running IIS version 5 or 6.
How do I create pages for mobile devices?
ASP.NET will automatically detect the type of browser making the request. This information is used by the page and by individual controls to render appropriate markup for that browser. You therefore do not need to use a special set of pages or controls for mobile devices. (Whether you can design a single page to work with all types of browsers will depend on the page, on the browsers you want to target, and on your own goals.)
Are ASP.NET pages XHTML compatible?
Yes. Individual controls render markup that is compatible with the XHTML 1.1 standard. It is up to you, however, to include the appropriate document type declaration and other XHTML document elements. ASP.NET does not insert elements for you to ensure XHTML compatibility. For details, see ASP.NET and XHTML Compliance.
Can I hide the source code for my page?
Server-side code is processed on the server and is not sent to the browser, so users cannot see it. However, client script is not protected; any client script that you add to your page, or that is injected into the page by server processing, is visible to users. If you are concerned about protecting your source code on the server, you can precompile your site and deploy the compiled version. For details, see Publishing Web Sites.
When I run a page, I get the error “The page cannot be displayed” and an HTTP 502 Proxy Error. Why?
This error can occur if you are running ASP.NET Web pages using the Visual Web Developer Web server, because the URL includes a randomly selected port number. Proxy servers do not recognize the URL and return this error. To get around the problem, change your settings in Internet Explorer to bypass the proxy server for local addresses, so that the request is not sent to the proxy. In Internet Explorer, you can make this change in Tools > Internet Options. In the Connections tab, click LAN Settings and then select Bypass proxy server for local addresses.
Which page code model is preferable, single-file or code-behind?
Both models function the same and have the same performance. The choice of using single-file pages versus code-behind pages is one of personal preference and convenience. For details, see ASP.NET Web Page Code Model.
The QuickStart examples and examples in the API reference seem to use single-file pages frequently. Does this mean that single-file is the preferred model for pages?
No. Single-file pages are frequently used in examples because they are easier to illustrate ? the writer does not have to create a separate file to show the code.
Is it better to write code in C# or Visual Basic?
You can write code for your Web application in any language supported by the .NET Framework. That includes Visual Basic, C#, J#, JScript, and others. Although the languages have different syntax, they all compile to the same object code. The languages have small differences in how they support different features. For example, C# provides access to unmanaged code, while Visual Basic supports implicit event binding via the Handles clause. However, the differences are minor, and unless your requirements involve one of these small differences, the choice of programming language is one of personal preference. Once programs are compiled, they all perform identically; that is, Visual Basic programs run just as fast as C# programs, since they both produce the same object code.
Do I have to use one programming language for all my Web pages?
No. Each page can be written in a different programming language if you want, even in the same application. If you are creating source code files and putting them in the \Code folder to be compiled at run time, all the code in must be in the same language. However, you can create subfolder in the \Code folder and use the subfolders to store components written in different programming languages.
Is the code in single-file and code-behind pages identical?
Almost. A code-behind file contains an explicit class declaration, which is not required for single-file pages.
Is the old code-behind model still supported?
Old projects will continue to run without change. In Visual Studio 2005, if you open a project created in Visual Studio .NET 2002 or 2003, the project is converted to the new project layout used in Visual Studio 2005. As part of the conversion, pages that use the old code-behind model are converted to use the new code-behind model. You cannot create pages using the old code-behind model in Visual Studio 2005.
Questions on ASP.NET 2.0 Controls
Why is there no DataGrid control on the Toolbox?
The DataGrid control has been superseded by the GridView control, which can do everything the DataGrid control does and more. The GridView control features automatic data binding; auto-generation of buttons for selecting, editing, and deleting; automatic sorting; and automatic paging. There is full backward compatibility for the DataGrid control, and pages that use the DataGrid will continue to work as they did in version 1.0 of ASP.NET.
Can I still use the DataList and Repeater controls?
Absolutely. You can use them the way you always have. But note that the controls have been enhanced to be able to interact with data source controls and to use automatic data binding. For example, you can bind a DataList or Repeater control to a SqlDataSource control instead of writing ADO.NET code to access the database.
What’s the difference between login controls and Forms authentication?
Login controls are an easy way to implement Forms authentication without having to write any code. For example, the Login control performs the same functions you would normally perform when using the FormsAuthentication class ? prompt for user credentials, validate them, and issue the authentication ticket ? but with all the functionality wrapped in a control that you can just drag from the Toolbox in Visual Studio. Under the covers, the login control uses the FormsAuthentication class (for example, to issue the ticked) and ASP.NET membership (to validate the credentials). Naturally, you can still use Forms authentication yourself, and applications you have that currently use it will continue to run.
Configuring ASP.NET 2.0
How is ASP.NET configuration data formatted?
ASP.NET configuration data is encoded in XML and stored as plaintext files. You can access these files programmatically by using administration tools or by using a text editor. For more information, see ASP.NET Configuration Overview.
Where are the ASP.NET configuration files stored?
System-wide configuration settings and some ASP.NET schema settings are stored in a file named Machine.config, which is located in the %SystemRoot%\Microsoft .NET\Framework\versionNumber\CONFIG directory. This directory also contains other default settings for ASP.NET Web applications in a file that is referred to as the root Web.config file. ASP.NET configuration files for individual Web sites and applications, which are also named Web.config files, can be stored in any Web site root directory, application root directory, application subdirectory, or all of these. For more information, see ASP.NET Configuration File Hierarchy.
How are the ASP.NET configuration files related to the Internet Information Services (IIS) configuration file (the IIS metabase)?
In IIS versions 6.0 and earlier, the ASP.NET configuration system redirects any IIS-specific settings that it controls. The ASP.NET configuration system then configures IIS for you by automatically editing the IIS metabase. For information about the IIS metabase, see Working with the IIS Metabase.
I used the ASP.NET configuration system to restrict access to my ASP.NET application, but anonymous users can still view some of my files. Why is that?
The features of the ASP.NET configuration system only apply to ASP.NET resources. For example, Forms Authentication only restricts access to ASP.NET files, not to static files or ASP (classic) files unless those resources are mapped to ASP.NET file name extensions. Use the configuration features of IIS to configure non-ASP.NET resources.
Since there can be multiple ASP.NET configuration files on one computer, how does ASP.NET configuration handle inheritance?
ASP.NET integrates the settings in configuration files (the Machine.config and Web.config files) into a single inheritance hierarchy. With a few exceptions, you can place a Web.config file wherever you need to override the configuration settings that are inherited from a configuration file located at a higher level in the hierarchy. For more information, see ASP.NET Configuration File Hierarchy.
How does ASP.NET consolidate the settings in all of the configuration files?
At run time, ASP.NET reads the settings in the Machine.config file and all of the Web.config files and then assembles a cache of the settings for each valid URL in each application on the server.
What happens when a configuration setting changes during run time?
ASP.NET invalidates the existing cache and assembles a new cache. Then ASP.NET automatically restarts the application to apply the changes.
Can I configure specific folders directly?
Yes. By using the location element in a configuration file that is located higher in the configuration hierarchy, you can configure the attributes of individual resources, such as the application directories under a Web site or application subdirectories. This is useful in hosting environments for specifying configuration settings in a machine-level configuration file that apply to individual Web sites. For more information, see How to: Configure Specific Folders Using Location Settings.
Can I lock a configuration setting so that a Web.config file that appears lower in the hierarchy cannot override it?
Yes. By setting the location element’s Override attribute to false, you can lock a specific setting so that it does not inherit settings from below. For more information, see How to: Lock ASP.NET Configuration Settings.
How can I get programmatic access to ASP.NET configuration settings?
You can read, create, or modify configuration settings from within an ASP.NET application by using the ASP.NET management API. You can develop your own applications including Web applications, console applications, and scripts that use the management API.
How can I get programmatic access to IIS configuration settings?
You can use ADSI, WMI, or COM interfaces to configure IIS programmatically. For more information, see Using IIS Programmatic Administration.
How are ASP.NET configuration files secured against unauthorized access?
ASP.NET configures IIS to deny access to any user that requests access to the Machine.config or Web.config files.
What are the limitations when configuring ASP.NET by using the ASP.NET MMC snap-in?
The ASP.NET MMC snap-in allows you to set ASP.NET configuration at all levels, but on the local computer only. For more information, see ASP.NET MMC Snap-In.
Can I configure ASP.NET Web sites and applications remotely?
Yes. You can use the Web Site Administration Tool to configure remote Web sites and applications by using a Web browser. For more information, see Web Site Administration Tool.
Can I configure ASP.NET by directly editing the Machine.config and Web.config files?
Yes. You can use any text editor or XML editor to edit the ASP.NET configuration files directly. However, consider using one of the tools mentioned in the previous questions to edit ASP.NET configuration because those tools often ensure XML validation.
Can I configure ASP.NET by directly editing the IIS metabase file?
The IIS 6.0 metabase is stored in an XML-formatted file called Metabase.xml. You can configure IIS to allow the metabase to be edited directly, but not all of the ASP.NET configuration settings are available in the IIS metabase. It is best to configure ASP.NET features by using the ASP.NET configuration system. For more information, see Editing ASP.NET Configuration Files.
What tools can I use to edit the IIS metabase?
You can use the IIS Manager snap-in for the MMC. For information about common administrative tasks for ASP.NET developers, see ASP.NET and IIS Configuration.
Questions on Visual Web Developer
Can I run Web pages on a remote computer using ASP.NET Development Server?
Yes, you can create a file system Web application and specify a UNC pointing to another computer as the location for the files. When you run a page in Visual Web Developer, it starts up the ASP.NET Development Server locally, which in turn can read files from a remote computer.
When I try to run pages on a remote computer using the ASP.NET Development Server, I get an error that says the BIOS limit has been exceeded. What is the problem?
You might see this error if the remote computer is running Windows 2000 or Windows XP. If the remote computer is running Windows 2000, you can follow the instructions in Microsoft KnowledgeBase article 810886 to set the maximum number of concurrent connections to a higher number. If you are running Windows XP, you might be able to avoid this error by closing existing shared resources, including terminal server sessions, on the remote computer. (Windows XP is configured with a fixed number of maximum concurrent network requests.)