# mulesoft Microsoft .NET Connector - Full Documentation
---
product: Microsoft .NET Connector
version: 3.1
is-latest-version: true
---
# Microsoft .NET Connector 3.1
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Anypoint Connector for Microsoft .NET (Microsoft .NET Connector) enables you to execute native .NET
code in a Mule application. Microsoft .NET Connector has a dependency on the .NET CLR, which is
available only on Windows machines.
This connector executes .NET code using Java Native Interface (JNI), which provides fast
interprocess communication between Java Virtual Machine (JVM) and a native application that runs in
a host operating system.
The connector supports one operation, **Execute**, which enables users to select a class and method
to execute, and to pass the corresponding arguments for that method.
> [!NOTE] This connector supports standalone deployments only. This connector does not support
> CloudHub or Runtime Fabric deployments.
## Before You Begin
To use this connector, you must be familiar with:
- The .NET API
- Anypoint Connectors
- Mule runtime engine (Mule)
- Elements and global elements in a Mule flow
- Creating a Mule app using Anypoint Studio or Anypoint Code Builder
Before creating an app, you must have access to:
- The .NET target resource
- Anypoint Studio or Anypoint Code Builder
## Common Use Cases for the Connector
Common use cases for this connector include:
- Executing code in an existing binary assembly (DLL) without modification
- Developing new .NET code that extends the capability of your integration application
For examples, see [Examples](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-examples).
## Audience
- New users, read:
- [Using Anypoint Studio to Configure the Connector](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-studio) to create
your Mule app
- [Examples](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-examples), which provides one or more use cases for the
connector
- Advanced users, read:
- [XML and Maven Support](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-xml-maven)
- [Examples](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-examples), which provides one or more use cases for the
connector
## Next Step
After you complete the prerequisites and experiment with examples, you are ready to create your own
app and configure the connector using [Anypoint Studio](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-studio).
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Use Exchange to Discover Connectors, Templates, and Examples](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange)
- [Salesforce Help](https://help.salesforce.com)
---
product: Microsoft .NET Connector
version: 3.1
is-latest-version: true
---
# Microsoft .NET Connector 3.1 Examples
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
This use case executes the `SumOfDigits(System.Int32 number) → System.Int32` method from the
`DemoDotNet.dll` library. The method returns the sum of all digits in the input argument.
The following screenshot shows the Studio app flow for this example:

1. Create a new Mule project in Studio.
2. In the **Mule Palette** view, search for `http` and select the **Listener** operation.
3. Drag the **Listener** operation onto the Studio canvas.
4. In the **Listener** configuration, click **+** next to the **Connector configuration** field to
add a global element.
5. Set the **Host** field to `localhost`.
6. Click **OK**.
7. In the **Listener** configuration, set the **Path** field to `sumOfDigits`.
8. From the **Mule palette** view, drag a **Transform Message** component to right of **Listener**.
9. Click **Transform Message** and set the output as follows:
```dataweave
dw 2.0
output application/json
---
{number: payload.num
}
```
This code sets the input argument for the method to execute. It obtains the `num` param from the
payload and assigns it to a new variable called `number`.
10. In the **Mule Palette** view, search for `dotnet` and drag the **Microsoft DotNet** >
**Execute** operation onto the Studio canvas, to the right of **Transform Message**.
11. In the **Execute** operation configuration, click **+** next to the **Connector configuration**
field to add a global element.
12. In the **Scope** field, select `Singleton`.
13. Click the **Assembly** tab and enter `DemoDotNet.dll` in the **Path** field.
14. Click **OK**.
15. In the **Execute** operation configuration, enter the following metadata in the **Type** field:
`DemoDotNet.NumberLibrary, DemoDotNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=PUBLIC_KEY_TOKEN`
This metadata specifies information about the .NET library to use. Once the connection is
established, the connector retrieves the metadata and populates the **Method info** section,
which contains all of the methods exposed by the `DemoDotNet.dll` library.
This example shows the `SumOfDigits` method, which receives the number defined in the payload of
the **Transform Message** component:
`DemoDotNet.NumberLibrary, DemoDotNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=PUBLIC_KEY_TOKEN | SumOfDigits(System.Int32 number) → System.Int32`
16. From the **Mule palette** view, drag a second **Transform Message** component to right of
**Execute**.
17. Click **Transform Message** and set the output as follows to transform the result of the
**Execute** operation to Java:
```dataweave
dw 2.0
output application/json
---
payload
```
18. Save the project.
19. Test the app by sending a REST request to `localhost:8081/sumOfDigits`.
## Use Case XML
Paste this code into your Studio XML editor to quickly load the flow for this example into your Mule
app:
```xml
```
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)
---
product: Microsoft .NET Connector
version: 3.1
is-latest-version: true
---
# Microsoft .NET Connector 3.1 Reference
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
## Default Configuration
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Name | String | The name for this configuration. Connectors reference the configuration with this name. | | x |
Connection | | The connection types that can be provided to this configuration. | | x |
Expiration Policy | | Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform expires the instance at the exact moment that it becomes eligible. Mule purges the instances as appropriate. | | |
## External Connection Type
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Scope | | The scope of the module | | x |
Grant Full Trust to the .NET assembly | | Set Full Trust | true | |
Declared methods only | | Set Declared Only | false | |
Include auto generated code | | Set Include Auto Generated Code. | false | |
Path | | The name of the .NET assembly, for example, <Company>.<Component>.dll | | x |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
## GAC Connection Type
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Scope | | Provide the scope of the module | | x |
Grant Full Trust to the .NET assembly | | Set Full Trust. | true | |
Declared methods only | | Set Declared Only. | false | |
Include auto generated code | | Set Include Auto Generated Code | false | |
Assembly Type | | Provide the Fully Qualified Type name, for example, Namespace.ClassName. | | x |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
## Legacy Connection Type
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Scope | | The scope of the module | | x |
Grant Full Trust to the .NET assembly | | Set Full Trust. | true | |
Declared methods only | | Set Declared Only. | false | |
Include auto generated code | | Set Include Auto Generated Code. | false | |
Assembly Type | | The fully qualified type name, for example, Namespace.ClassName | | |
Assembly Path | | The path of the .NET assembly, for example, C:\Projects\<Company>.<Component>.dll | | |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
## Resource Connection Type
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Scope | | The scope of the module | | x |
Grant Full Trust to the .NET assembly | | Set Full Trust. | true | |
Declared methods only | | Set Declared Only | false | |
Include auto generated code | | Set Include Auto Generated Code. | false | |
Path | | The name of the .NET assembly, for example, <Company>.<Component>.dll | | x |
Resource folder | | The name of the resource folder | | |
Reconnection | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
## Operations
- [Execute](#execute)
## Execute
``
Returns an object that represents the return value of the invoked method.
### Parameters
| Name | Type | Description | Default Value | Required |
|---|
Configuration | String | The name of the configuration to use. | | x |
Arguments | | The arguments to pass to the called method. | #[payload] | |
Type | | | | x |
Method | | | | x |
Target Variable | | The name of a variable in which to store the operation’s output. | | |
Target Value | | An expression that evaluates the operation’s output. The expression outcome is stored in the target variable. | #[payload] | |
Reconnection Strategy | | A retry strategy in case of connectivity errors | | |
### Output
### For Configurations
- [Default Configuration](#dot-net-config)
### Throws
- DOTNET:LOADER
- DOTNET:REQUEST
- DOTNET:METADATA
- DOTNET:UNKNOWN
- DOTNET:RETRY\_EXHAUSTED
- DOTNET:CONNECTIVITY
## Types
### Reconnection
| Field | Type | Description | Default Value | Required |
|---|
Fails Deployment | | When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy. | | |
Reconnection Strategy | | The reconnection strategy to use. | | |
### Reconnect
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often to reconnect (in milliseconds). | | |
Count | | The number of reconnection attempts to make. | | |
### Reconnect Forever
| Field | Type | Description | Default Value | Required |
|---|
Frequency | | How often in milliseconds to reconnect. | | |
### Expiration Policy
| Field | Type | Description | Default Value | Required |
|---|
Max Idle Time | | A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it’s considered eligible for expiration. | | |
Time Unit | NANOSECONDS MICROSECONDS MILLISECONDS SECONDS MINUTES HOURS DAYS
| A time unit that qualifies the Max IdleTime field. | | |
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)
---
product: Microsoft .NET Connector
version: 3.1
is-latest-version: true
---
# Microsoft .NET Connector 3.1 XML and Maven Support
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Although you can manually code a Mule app in XML, it is more efficient to use Anypoint Studio.
If you manually code a Mule runtime engine (Mule) app in XML, either from the Studio XML editor or
from a text editor, you can get access to the connector in your app by adding reference statements
to both your XML Mule flow and the Apache Maven `pom.xml` file.
When you install the connector in Studio, Studio automatically populates the XML code with the
connector’s namespace and schema location. It also adds a dependency to the `pom.xml` file.
## Add a Namespace for the Connector
Paste the following code inside the `` tag of the header of your configuration XML:
```xml
http://www.mulesoft.org/schema/mule/dotnet>
http://www.mulesoft.org/schema/mule/dotnet/current/dotnet>.xsd
```
This example shows how the namespace statements are placed in the `` XML block:
```xml
```
## Add a POM File Dependency
The Apache Maven `pom.xml` file generated by Anypoint Studio contains dependencies for a Mule app.
If you code a Mule app manually, include this XML snippet in your `pom.xml` file to enable access to
this connector:
```xml
GROUP_ID_FROM_EXCHANGE
mule-microsoft-dotnet-connector
x.x.x
mule-plugin
```
Replace `x.x.x` with the version that corresponds to the connector you are using.
To obtain the most up-to-date `pom.xml` file information:
1. Go to [Anypoint Exchange](https://www.mulesoft.com/exchange/).
2. In Exchange, click **Login** and supply your Anypoint Platform username and password.
3. In Exchange, search for `dotnet`.
4. Select the connector.
5. Click **Dependency Snippets** near the upper right of the screen.
## Next Step
After completing your namespace and `pom.xml` file, you can try the
[Examples](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-examples).
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Salesforce Help](https://help.salesforce.com)
---
product: Microsoft .NET Connector
version: 3.1
is-latest-version: true
---
# Using Anypoint Studio to Configure Microsoft .NET Connector 3.1
> For the full documentation index, see: https://docs.mulesoft.com/llms.txt
Anypoint Studio (Studio) editors help you design and update your Mule applications, properties, and
configuration files.
To add and configure a connector in Studio:
1. [Create a Mule project](#create-mule-project).
2. [Add the connector to your Mule project](#add-connector-to-project).
3. [Configure a source for the connector’s flow](#configure-input-source).
4. [Add a connector operation to the flow](#add-connector-operation).
5. [Configure a global element for the connector](#configure-global-element).
6. [Configure the other connector fields](#configure-other-fields).
When you run the connector, you can view the app log to check for problems, as described in
[View the App Log](#view-app-log).
If you are new to configuring connectors in Studio, see
[Using Anypoint Studio to Configure a Connector](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio).
If, after reading this topic, you need additional information about the connector fields, see the
[Reference](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-reference).
## Create a Mule Project
In Studio, create a new Mule project in which to add and configure the connector:
1. In Studio, select **File > New > Mule Project**.
2. Enter a name for your Mule project and click **Finish**.
## Add the Connector to Your Mule Project
Add Anypoint Connector for Microsoft .NET (Microsoft .NET Connector) to your Mule project to
automatically populate the XML code with the connector’s namespace and schema location and to add
the required dependencies to the project’s `pom.xml` file:
1. In the **Mule Palette** view, click **(X) Search in Exchange**.
2. In the **Add Dependencies to Project** window, type `microsoft.net` in the search field.
3. Click **Microsoft .NET Connector** in **Available modules**.
4. Click **Add**.
5. Click **Finish**.
Adding a connector to a Mule project in Studio does not make that connector available to other
projects in your Studio workspace.
## Configure a Source
A source initiates a flow when a specified condition is met. You can configure one of these sources
to use with Microsoft .NET Connector:
- **HTTP Listener**
Initiates a flow each time it receives a request on the configured host and port.
- **Scheduler**
Initiates a flow when a time-based condition is met.
For example, to configure **HTTP Listener**, follow these steps:
1. In the **Mule Palette** view, select **HTTP** > **Listener**.
2. Drag **Listener** to the Studio canvas.
3. On the **Listener** configuration screen, optionally change the value of the **Display Name**
field.
4. Specify a value for the **Path** field.
5. Click the plus sign (**+**) next to the **Connector configuration** field to configure a global
element that can be used by all instances of `HTTP Listener` in the app.
6. On the **General** tab, specify connection information.
7. On the **TLS** tab, optionally specify TLS information.
8. On the **Advanced** tab, optionally specify reconnection information, including a reconnection
strategy.
9. Click **Test Connection** to confirm that Mule can connect with the specific server.
10. Click **OK**.
## Add a Connector Operation to the Flow
When you add a connector operation to your flow, you immediately define a specific operation for
that connector to perform.
To add an operation for Microsoft .NET, follow these steps:
1. In the **Mule Palette** view, select **Microsoft DotNet** and then select the desired operation.
2. Drag the operation onto the Studio canvas to the right of the source.
## Configure a Global Element for the Connector
When you configure a connector, it’s best to configure a global element that all instances of that
connector in the app can use. Configuring a global element requires you to provide the
authentication credentials the connector uses to access the target Microsoft .NET system.
To configure the global element for Microsoft .NET Connector, follow these steps:
1. Select the name of the connector in the Studio canvas.
2. In the configuration screen for the operation, click the plus sign (**+**) next to the
**Connector configuration** field to access the global element configuration fields.
3. On the **General** tab, complete these fields:

- **Connection**
Select a connection type.
- **Scope**
Select the connection scope:
- **Singleton**
Shares the same instance of the Microsoft .NET component across multiple calls. Use this
option to store a shared state in class instance members across different calls.
- **Transient**
Creates a new instance of the Microsoft .NET component per request.
- **Grant Full Trust to the .NET assembly**
Microsoft .NET code can be executed in an application domain with restricted privileges to
avoid the execution of malware code that can affect the stability of the Mule runtime engine.
These restrictions include limited access to the file system, native code execution, network
calls, registry access, and more. By default the Microsoft .NET connector is set to use full
trust.
- **Declared methods only**
If the **Declared methods only** field is set to `true`, the metadata fetches only the
declared methods from the .NET assembly and populates the **Method** field in the **Method
Info** section with these methods. The default is `false`.
- **Include auto generated code**
If the **Include auto generated code** field is set to `false` (the default value), the
metadata does not fetch the compiler-generated methods, so these methods won’t appear in the
**Method** field.
4. On the **Advanced** tab, optionally specify reconnection information, including a reconnection
strategy.
5. Click **Test Connection** to confirm that Mule can connect with the specified server.
6. Click **OK**.
### Configure the External Connection Type
Use the **External** connection type to connect with an assembly external to the application.
In the **Connection** field, select **External**:

### Configure the Gac Connection Type
Use the **Gac** connection type to connect with an assembly installed in the GAC (Global Assembly
Cache):
1. In the **Connection** field, select **Gac**.
2. In the **Assembly Type** field, enter the fully qualified type name for the Gac connection type,
for example, `Namespace.ClassName`.

## Configure the Legacy Connection Type
Use the **Legacy** connection type for backward compatibility:
1. In the **Connection** field, select **Legacy**.
2. In the **Assembly Type** field, enter the fully qualified type name for the **Legacy**
connection type, for example, `Namespace.ClassName`.
3. In the **Assembly Path** field, enter the path of the Microsoft .NET assembly, for example,
`C:\Projects\..dll`.

### Configure the Resource Connection Type
Use the **Resource** connection type to connect with an assembly embedded as a resource:
1. In the **Connection** field, select **Resource**.
2. In the **Path** field, specify the relative path to an executable .NET library in the resource
folder.
The default resources folder is `src/main/resources`.

## Configure the Other Connector Fields
After you configure a global element for Microsoft .NET Connector, configure the other required
fields for the connector:
| Field | Description |
|---|
Table name | Name of the table to create |
Attribute definitions | Attributes that describe the key schema for the table and its indexes |
Key schemas | Attributes that compose the primary key for a table or index |
## View the App Log
To check for problems, you can view the app log as follows:
- If you’re running the app from Anypoint Platform, the output is visible in the Anypoint Studio
console window.
- If you’re running the app using Mule from the command line, the app log is visible in your OS
console.
Unless the log file path is customized in the app’s log file (`log4j2.xml`), you can also view the
app log in the default location `MULE_HOME/logs/.log`.
## See Also
- [Introduction to Anypoint Connectors](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [Microsoft .NET Connector Reference](https://docs.mulesoft.com/microsoft-dotnet-connector/latest/microsoft-dotnet-connector-reference)
- [Salesforce Help](https://help.salesforce.com)