# Startup

URL: https://docs.wisej.com/docs/concepts/startup

Wisej.NET applications typically have a single application in the broad sense. For clarity:

- "Sub-application" refers to an application in the strict sense
- Each Wisej.NET project requires at least one default sub-application

## Startup Files

A new Wisej.NET project creates three startup files:

- `Default.html`
- `Default.json`
- `Program.cs`
`Default.html` maintains ASP.NET convention for startup pages.

`Program.cs` contains the `static` ( `Shared` in VB) `Main` method.

The `.html` and `.json` filenames should match for simplicity but this isn't required.

info
You can:
- Rename Default.html and Default.json
- Use .aspx files for pre-load .NET code execution (see [Wisej.UserData](/docs/controls/general/application#userdata) )

## Sub-Applications

### Creating

Create sub-applications in the project's root or any project folder:

1. Right-click project/folder → **Add → New Item**
2. Select **Wisej** on left side
3. Click **Application** in list
4. Set application **Name**
5. Click **Add**
Example with name "Admin" creates:

- `Admin.html`
- `Admin.json`
- `Admin.cs`
The `Admin.cs` file mirrors `Program.cs` :

- C# - VB.NET

```csharp
static class Admin
{
		/// <summary>
		/// The main entry point for the application.
		/// </summary>
    static void Main()
    {
    }
}
```

```visual
Public Module Program

	''' <summary>
	''' The main entry point for the application.
	''' </summary>
	Public Sub Main()
	End Sub
	
End Moule
```

### Running

Wisej.NET sub-applications start with the `.json` file, not the `.html` file. Even when accessing a URL with `.html` , Wisej.NET looks for the corresponding `.json` file (rules explained below).

For the "Admin" example, `Admin.json` contains:

- JSON

```javascript
{
	"url": "Admin.html",
	"startup": "[ProjectName].Admin.Main, [ProjectName]"
}
```

This file provides two key pieces of information:

- `url` - Which `.html` file to display in browser
- `startup` - Which server-side method to execute
When accessing `http://myApp.com/Admin` , Wisej.NET:

1. Locates `Admin.json`
2. Reads the `url` key and loads `Admin.html`
3. Invokes the startup method specified in `Admin.json`
info

- Browsers require an HTML-like file
- Wisej.NET requires browser to load/execute `wisej.wx`
- Instead of startup method, you can specify sub-application's main view (details below)

## Entry Point

Wisej.NET needs the server-side startup method - in this case `[ProjectName].Project.Main` in assembly `[ProjectName]` .

To instantiate an `AdminPage` instead of executing `Main` , modify `Default.json` :

- JSON

```javascript
{
    "url": "Default.html",
    "mainWindow": "[ProjectName].AdminPage, [ProjectName]"
}
```

## Startup Workflow

The Wisej.NET startup process follows these steps:

1. Locate `.json` file
2. Direct browser to load/display the `url` HTML file
3. Execute server-side action based on `.json` file:
- Run the `startup` method, or
- Instantiate the `mainWindow` view
4. Run the `startup` method, or
5. Instantiate the `mainWindow` view
info
Specifying both `startup` and `mainWindow` properties causes Wisej.NET to execute both.

## Rules for Finding the .json File

1. **Replace Extension with .json**
- For URLs ending with an extension (e.g., `http://myserver.com/Startup.php` )
- Wisej.NET looks for matching `.json` file ( `\Startup.json` )
- If `.json` not found and Wisej.NET loaded, `wisej.wx` reloads current page
2. For URLs ending with an extension (e.g., `http://myserver.com/Startup.php` )
3. Wisej.NET looks for matching `.json` file ( `\Startup.json` )
4. If `.json` not found and Wisej.NET loaded, `wisej.wx` reloads current page
5. **Append Default.json to Folder Path**
- For folder URLs:
- Root folder ( `http://myserver.com` ) → `\Default.json`
- Folder path ( `http://myserver.com/Suppliers/` ) → `\Suppliers\Default.json`
6. For folder URLs:
- Root folder ( `http://myserver.com` ) → `\Default.json`
- Folder path ( `http://myserver.com/Suppliers/` ) → `\Suppliers\Default.json`
7. Root folder ( `http://myserver.com` ) → `\Default.json`
8. Folder path ( `http://myserver.com/Suppliers/` ) → `\Suppliers\Default.json`
9. **Handle URLs Without Extensions**
- For URLs like `http://myserver.com/Customers` , Wisej.NET:
1. Tries `\Customers.json`
2. If not found, treats "Customers" as folder and tries `\Customers\Default.json`
10. For URLs like `http://myserver.com/Customers` , Wisej.NET:
1. Tries `\Customers.json`
2. If not found, treats "Customers" as folder and tries `\Customers\Default.json`
11. Tries `\Customers.json`
12. If not found, treats "Customers" as folder and tries `\Customers\Default.json`

## Default Document Configuration

The `Web.config` file in Wisej.NET project templates includes:

```markup
<defaultDocument enabled="true">
   <files>
       <add value="Default.html" />
   </files>
</defaultDocument>
```

This `defaultDocument` setting isn't required because:

- Website root URLs are treated as folder paths
- Wisej.NET automatically looks for `\Default.json` in the project root
- Rule 2 above handles folder path resolution
