# 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: ![Studio Flow diagram with Listener, Execute operation, and two Transform Message components](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-use-case.png) 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
NameTypeDescriptionDefault ValueRequired

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
NameTypeDescriptionDefault ValueRequired

Scope

Enumeration, one of:

  • Singleton

  • Transient

The scope of the module

x

Grant Full Trust to the .NET assembly

Boolean

Set Full Trust

true

Declared methods only

Boolean

Set Declared Only

false

Include auto generated code

Boolean

Set Include Auto Generated Code.

false

Path

String

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
NameTypeDescriptionDefault ValueRequired

Scope

Enumeration, one of:

  • Singleton

  • Transient

Provide the scope of the module

x

Grant Full Trust to the .NET assembly

Boolean

Set Full Trust.

true

Declared methods only

Boolean

Set Declared Only.

false

Include auto generated code

Boolean

Set Include Auto Generated Code

false

Assembly Type

String

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
NameTypeDescriptionDefault ValueRequired

Scope

Enumeration, one of:

  • Singleton

  • Transient

The scope of the module

x

Grant Full Trust to the .NET assembly

Boolean

Set Full Trust.

true

Declared methods only

Boolean

Set Declared Only.

false

Include auto generated code

Boolean

Set Include Auto Generated Code.

false

Assembly Type

String

The fully qualified type name, for example, Namespace.ClassName

Assembly Path

String

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
NameTypeDescriptionDefault ValueRequired

Scope

Enumeration, one of:

  • Singleton

  • Transient

The scope of the module

x

Grant Full Trust to the .NET assembly

Boolean

Set Full Trust.

true

Declared methods only

Boolean

Set Declared Only

false

Include auto generated code

Boolean

Set Include Auto Generated Code.

false

Path

String

The name of the .NET assembly, for example, <Company>.<Component>.dll

x

Resource folder

String

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
NameTypeDescriptionDefault ValueRequired

Configuration

String

The name of the configuration to use.

x

Arguments

Object

The arguments to pass to the called method.

#[payload]

Type

String

x

Method

String

x

Target Variable

String

The name of a variable in which to store the operation’s output.

Target Value

String

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

Type

Any

### For Configurations - [Default Configuration](#dot-net-config) ### Throws - DOTNET:LOADER - DOTNET:REQUEST - DOTNET:METADATA - DOTNET:UNKNOWN - DOTNET:RETRY\_EXHAUSTED - DOTNET:CONNECTIVITY ## Types ### Reconnection
FieldTypeDescriptionDefault ValueRequired

Fails Deployment

Boolean

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
FieldTypeDescriptionDefault ValueRequired

Frequency

Number

How often to reconnect (in milliseconds).

Count

Number

The number of reconnection attempts to make.

### Reconnect Forever
FieldTypeDescriptionDefault ValueRequired

Frequency

Number

How often in milliseconds to reconnect.

### Expiration Policy
FieldTypeDescriptionDefault ValueRequired

Max Idle Time

Number

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

Enumeration, one of:

  • 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: ![Studio General tab for DotNet config](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-connection.png) - **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**: ![External connection type with Assembly tab selected](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-external-assembly.png) ### 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`. ![Global assembly cache connection type with Assembly tab selected](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-gac-assembly.png) ## 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`. ![Legacy connection type with Assembly configurations](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-legacy-assembly.png) ### 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`. ![Resource connection type with Assembly tab selected](/mulesoft/current/en-us/microsoft-dotnet-connector/latest/_images/microsoft-dotnet-resource-assembly.png) ## Configure the Other Connector Fields After you configure a global element for Microsoft .NET Connector, configure the other required fields for the connector:
FieldDescription

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)