SmartAssembly
Latest version: 6.7
Knowledge Base
Protecting website code using SmartAssembly
Category: How do I?
Date: 13 Oct 2011
Product: SmartAssembly
SmartAssembly can only protect precompiled .NET assemblies, whereas traditionally, ASP .NET websites are dynamically compiled on the server as needed. This makes it unclear how to protect a website with SmartAssembly.
The solution this problem is to precompile the website. The .NET Framework ships with a utility for this purpose called aspnet_compiler.exe. This will create a series of DLLs from your website code and placeholder files from the original code files, so the original code is no longer available in the website folder. Once the compilation is complete, you may protect the resulting DLLs in the bin folder using SmartAssembly. If you are also implementing error reporting, you must protect all dlls separately, as merging and embedding seem to break the error reporting function.
To implement SmartAssembly protection and error reporting in ASP .NET, follow these steps:
· Add a reference to c:\program files\red gate\smartassembly 6\SDK\bin\SmartAssembly.ReportException.dll in the web project
· Open the codebehind file for Global.asax (Global.aspx.cs) in Notepad or Visual Studio
· If the method protected void Application_Error(Object sender, EventArgs e) does not exist, create it
· The method should contain these lines
- [C#]
- Exception exc = Server.GetLastError().GetBaseException();
- SmartAssembly.ReportException.ExceptionReporting.Report(exc);
- [/C#]
- [VB]
- Dim exc As Exception = Server.GetLastError().GetBaseException()
- SmartAssembly.ReportException.ExceptionReporting.Report(exc)
- [/VB]
· Save Global.asax.cs (or vb)
· Use Aspnet_Compiler to create pre-compiled code for the website
(aspnet_compiler -v "/" -d -p "c:\mywebsite" "c:\mynewwebsite")
· Open the dependent DLLs (not App_Web_xxx.dll) and create an SA project for each
· Set up error reporting to report silently
· Build the DLL into a new folder in a "bin" subfolder (c:\mynewSAwebsite\bin)
· Open the main DLL in a new SmartAssembly project (App_Web_xxx.dll)
· Set up error reporting as for the dependent DLLs, but do not merge or embed the dependencies.
· Copy all of the files that are not DLLs from the original compiled website to the one you just created
(xcopy c:\mynewwebsite c:\mynewSAwebsite /E /EXCLUDE:\bin\)
The compiled and protected website is now available in the c:\mynewSAwebsite folder. Configuring this folder as an IIS web application will make it available to users of your website.
Document ID: KB201110000519 Keywords: SmartAssembly,ASP,error,reporting
Was this article helpful?
SmartAssembly
- Using Smartassembly to obfuscate a windows service
- Obfuscation not renaming identically-named methods in different classes
- Serialization exceptions occurring in obfuscated assemblies
- SmartAssembly skipping obfuscation of some classes in your assembly
- SmartAssembly is not merging or embedding all assembly dependencies
- Can I customize the path to the MDB database?
- System.InvalidOperationException when attempting to connect to local SmartAssembly database
- Protecting website code using SmartAssembly
- Visual Studio Deployment Projects including unprotected builds
- SmartAssembly MSBUILD tasks failing because of difference in log4net assembly
- SmartAssembly Error Reporting: This application has submitted too many reports
- The assembly is being merged, but the dependent assembly isn't
- ERR 2002: Server did not recognize the value of HTTP Header SOAPAction
- The error report is not associated with a valid project ID - SmartAssembly
- Application built with an evaluation edition of SmartAssembly
- How end users can change their participation in Feature Usage Reporting
- Log file for SmartAssembly
- Moving SmartAssembly to another computer
- 'Using JET databases is not possible in 64-bit applications' error when using MSBuild or TFS
- SmartAssembly stack trace is invalid when Method Parent Obfuscation is enabled
- Upgrading SmartAssembly version 4.x to version 5
- Upgrading SmartAssembly Standard to Professional
- Problems building WPF applications with SmartAssembly 6.7
all products
- Some Red Gate products identified as containing a trojan by Anti-Virus software
- Activation may fail with Unknown Error -1
- Product uses web help although a CHM file is available locally
- Argument exception resulting from missing environment variable
- Check for updates may fail when used through proxies
- 'Unidentified Publisher' error when repairing or uninstalling
- Licensing activates product as standard edition
- Moving Red Gate software products to another machine
- Red Gate tools log locations
- The application UI opening slowly when there is no internet access
SmartAssembly
all products
- Red Gate product acknowledgements
- Activating your products
- Activating your products
- Red Gate bundle history
- Check for updates
- Troubleshooting Check for Updates errors
- Current versions
- Deactivating your products
- Installing Red Gate products from the .msi file
- Requesting additional activations
- Serial numbers for bundles
- Reactivating using a different serial number
- Extending your trial
- Finding your serial numbers
- Moving a serial number from one computer to another
- No response received for manual activation
- Licensing and activation resources
- Licensing and activation resources
- Troubleshooting licensing and activation errors
- Licensing and activation FAQs
- Red Gate tools log file locations
- Download old versions of products
- Download product prerequisites & utilities
- Support & upgrades
- Upgrading your software
- Upgrading FAQs

Using SmartAssembly for obfuscation