.NET Framework 4.6 and 4.5 – walk-through – (Part 10)

To ensure predictable behavior, all transactions must possess the basic ACID properties (atomic, consistent, isolated, and durable). These properties reinforce the role of mission-critical transactions as all-or-none propositions.

You can utilize the explicit programming model by using the Transaction class, or the implicit programming model in which transactions are automatically managed by the infrastructure, by using the TransactionScope class. It is recommended that you use the implicit transaction (TransactionScope) model for development.

Due to its ease of use and efficiency, it is recommended that you use the TransactionScope class when developing a transaction application.


The Complete method commits the transaction. If an exception has been thrown, Complete is not called and the transaction is rolled backFailing to call this method aborts the transaction, because the transaction manager interprets this as a system failure, or equivalent to an exception thrown within the scope of transaction. However, calling this method does not guarantee that the transaction will be committed. It is merely a way of informing the transaction manager of your status.

The using statement ensures that the Dispose method of the TransactionScope object is called even if an exception occurs.

rollback a transaction

If you want to rollback a transaction, you should not call the Complete method within the transaction scope. For example, you can throw an exception within the scope. The transaction in which it participates in will be rolled back.

 TransactionScope Options


To commit the transaction, you need to explicitly call the Commit method. For rolling back a transaction, you should call the Rollback method. It is important to note that until a CommittableTransaction has been committed or rolled back, all the resources involved in that transaction are still locked. It is up to the application developer to handle exceptions and specifically call the Rollback(Exception) method in case of failures.

You can call BeginCommit to dispatch the commit holdup to a thread from the thread pool. You can also call EndCommit to determine if the transaction has actually been committed.

Traces are the publishing of specific messages that are generated during application execution.

Trace Level Description
Critical Serious failures, such as the following, have occurred:

  • An error that can cause an immediate loss in user functionality.
  • An event that requires an administrator to take action to avoid loss of functionality.
  • Code hangs.
  • This tracing level can also provide sufficient context for interpreting other critical traces. This can help to identify the sequence of operations leading to a serious failure.
Error An error (for example, invalid configuration or network behavior) has occurred that can result in a loss of user functionality.
Warning A condition exists that can subsequently result in an error or critical failure (for example, allocation failing or approaching a limit). Normal processing of errors from user code (for example, transaction aborted, timeouts, authentication failed) can also generate a warning.
Information Messages helpful for monitoring and diagnosing system status, measuring performance, or profiling are generated. These can include transaction and enlistment lifetime events, such as a transaction being created or committed, the crossing of a significant boundary, or the allocation of significant resources. A developer can then utilize such information for capacity planning and performance management.


When you as an administrator turn on tracing, sensitive information might be written to a trace log that is publicly viewable by default. To mitigate any possible security threat, you should consider storing the trace log in a secure location controlled by share and file system access permissions.

Post build event execute powershell

if $(ConfigurationName) == Debug (
“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” -file “$(ProjectDir)\$(ProjectName).ps1” $(TargetDir)
) ELSE (
echo “This is a release build.”.

You will typically use Windows authentication with an application deployed on a corporate intranet. Forms authentication means that you must include login controls in your application and pass the acquired credentials to the authentication provider. You will typically use forms authentication with an application deployed on the Internet.

To validate a user, you call the static Membership.ValidateUser method.

When using Windows authentication, you must pass empty strings or null as the parameters of the ValidateUser method. When using Windows authentication, this method call will always return true.

With forms authentication, the ValidateUser method will return a value indicating whether the remote service has authenticated the user. If validation is successful, an authentication cookie is stored on the local hard disk. This cookie is used to confirm validation when accessing the roles and settings services.

All client application services APIs are synchronous. Client application services do not directly support asynchronous behavior.

Determine Which .NET Framework Versions Are Installed https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx#net_b

csc.exe will do the job.

Authentication Services

Logout deletes the local authentication cookie so that login will be required when the application is restarted. After logout, the event handler restarts the application. When the application restarts, it displays the welcome message followed by the login dialog box. The welcome message makes it clear that the application has restarted. This prevents potential confusion if the user must log in to save settings, and then must log in again because the application has restarted.

The value of the Console.In property is a System.IO.TextReader object, whereas the values of the Console.Out and Console.Error properties are System.IO.TextWriter objects. You can associate these properties with streams that do not represent the console, making it possible for you to point the stream to a different location for input or output. For example, you can redirect the output to a file by setting the Console.Out property to a System.IO.StreamWriter, which encapsulates a System.IO.FileStream by means of the Console.SetOut method. The Console.In and Console.Out properties do not need to refer to the same stream.

WCF provides ASP.NET compatibility mode to grant developers full access to the features in the ASP.NET HTTP pipeline when writing WCF services. To use this mode, you must set the aspNetCompatibilityEnabled attribute to true in the <serviceHostingEnvironment> section of web.config. Additionally, any service in this appDomain needs to have the RequirementsMode property on its AspNetCompatibilityRequirementsAttribute set to Allowed or Required. By default AspNetCompatibilityRequirementsAttribute is now set to Allowed.

WCF supports for true asynchronous streaming where the send side now does not block threads if the receive side is not reading or slow in reading thereby increasing scalability. Removed the limitation of message buffering when a client sends a streamed message to an IIS hosted WCF service.

WCF – An HTTPS protocol mapping has been added to simplify exposing an endpoint over HTTPS. To enable an HTTPS endpoint, ensure your website has an HTTPS binding and SSL certificate configured, and then simply enable HTTPS for the virtual directory that hosts the service. If metadata is enabled for the service, it will be exposed over HTTPS as well.

WebSockets is a technology that provides true bidirectional communication over ports 80 and 443 with performance characteristics similar to TCP.

The following table describes the settings that have changed and where to find additional information.

Client applications use the ChannelFactory<TChannel> class to create a communication channel with a WCF service.

In a WCF project, data types defined in XML (such as are exposed in a service) can be pasted directly into a code page. The XML type will be pasted as a CLR type.

IHttpCookieContainerManager makes working with cookies on the client side much easier. When AllowCookies is set to true on the binding, you can access cookies by using the following code:

Leave a Reply

Your email address will not be published. Required fields are marked *