Installed the 931 but still not able to work the obfuscator. It is now workable in the ide but as soon as I use the obfuscated assembly I get a parser error:
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type ‘WTKPrism.Global_asax’.
Source Error:
Line 1: <%@ Application CodeBehind=“Global.asax.pas” Inherits=“WTKPrism.Global_asax” Language=“C#” %>
Sorry but I cannot reproduce that error with 931 build. Could you please provide us with simple testcase that shows the problem.
Also as far as I can see the CodeBehid file is Oxygene file (.pas extension) but Language is C#. If you are trying to obfuscate ASP.NET project please look at you .asax file, did you mean to use C# language instaed of Oxygene?
But now I see that the code behind doesn’t recognize any control I drop on the aspx page, so maybe this relates to another issue?
Thank you for the report. The issue has been logged for further review (#51377).
Then adding the obfuscator project, test the debug/release assemply – nothing works.
Thank you, the issue is reproduced and logged for further review (#51675). I’ll let you know when we have fix for that issue.
Let me start by saying how much I appreciate Remobjects. You really have the right kind of inspiration that is much needed in the computer world of today, and I like your products. Please remember this, since I also must state the following:
My experience up to now has been disappointing. Its now over two months since I’ve purchased the products, and not only I have made no progress but actually spent hours of work and tons of resources simply to not go anywhere with my projects, only testing and debugging your products.
I’m not saying your products are not good, on the contrary – as I mentioned earlier I like them. I’m not saying you have more issues than other companies. But I am saying I’m stuck and I do get the feeling you’re spreading yourself too thin.
Don’t forget we’ve all paid to be your customers. We do share your enthusiasm, but have work to do, deadlines to meet, limited and calculated resources to follow, and need stable products and support/documentation today, and can wait a little with the-best-product-ever of tomorrow.
Even looking at this specific thread you can see I’m struggling with a product that doesn’t work. Your replies seem to simply be forum replies not based on serious issue testing, which is clear now since you finally confirm my own testing as opposed to your earlier replies. My last post on Nov 2nd was completely ignored and only now had been attended to and logged. This is not promising enough.
So… I hope you take note of my concerns above. If not many, then at least some of the other customers share them too. I did write it to show my disappointment (up to now) but it is said with my best hopes of your success and improvement.
i am very sorry to hear about the problems you have had, and i sincerely apologize. I know it can be annoying when running into bugs and not getting a solution right away; we try our best to handle all issues and bug reports from customers, but sometimes its simply not feasible to provide a solution in a given time frame. i believe we already have pretty frequent update cycles (and a very open beta program, accessible to all customers) and are thus able to get fixes out much faster than others - keep in mind that some products are on much longer release cycles, and you would have to wait a year or more for a new release to be out, hopefully addressing a bug.
Obfuscation with ASP.NET certainly is a corner-case scenario that we apparently had not tested as much as we w should have from the getgo, and - again - i am sorry that you had to run into problems with that, but i also hope that lack of Obfuscation was not a complete showstopper for you to keep working, and with only little over three weeks after your initial report we do have the issue fixed (from what i gather from Viktoria’s previous reply), and the fix should be in the current next beta build and the upcoming release that will ship before the end of this month.
Thanks for your answer. However I’m afraid it still doesn’t seem to work correctly (5.0.31.951).
And yes, it is a big problem since I cannot upload and start/open my projects to the public because of a high need to protect my intellectual properties. Also, this problem exists since my purchase on September and I’m quite stuck (this post is not the only one on the issue).
This is the (usual) message for a simple default test app with 951:
Parser Error Message: Could not load type ‘test1.Global_asax’.
Source Error:
Line 1: <%@ Application CodeBehind=“Global.asax.pas” Inherits=“test1.Global_asax” Language=“Oxygene” %>
I’m able to work with Oxygen very well, and enjoy the product, and can bypass any issues there. But the obfuscator is really one-purpose product and it’s not working, and it has become a really really urgent matter. You have to get over its working problem and find out what is going on.
Please take the time to make this product work as quickly as possible.
@berchick: I just tried your testcase, I extracted it, built it, ran it, then copied the obfuscated test.dll on top of the existing to replace it, this did indeed give me:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'test1.Global_asax'.
Source Error:
Line 1: <%@ Application CodeBehind="Global.asax.pas" Inherits="test1.Global_asax" Language="Oxygene" %>
Source File: /global.asax Line: 1
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.237
now this is quite expected, by default all classes are obfuscated, but ASP.NET does lookups by name (for both type & methods) By adding:
Thanks ck for digging in. Correct me if I’m wrong but adding reflection and applying this attribute will not obfuscate the page, and is needed on every page. This means the problem is not solved, as you have to go and un-obfuscate all of the pages you do want to obfuscate.
Please try to add new page to the project and advise me if this is not so.
It will indeed not obfuscate the page, the reason this is needed is simple. The ASP.NET code looks for the class by name through reflection, that part not optional. Any event handler will have the same problem, and all fields (in the code besides logic) can’t be obfuscated. Obfuscation and asp.net don’t work together well, (any utility classes are fine, those can be obfuscated).
(though you can remove the ApplyToMembers part and put [Obfuscation(Exclude := true)] on the members that do need to be publically accessible (Which is anything that is referenced from an ASPX file), this won’t work for fields as those are auto generated by the asp compiler
Well… my question was actually a rhetorical one. Your help is appreciated, especially if one is in need of a single class obfuscating, and also might help RemObjects staff. But for a complete project solution, going over dozens of pages marking them as ‘exluded’ even though all of the code needs to be obfuscated, only so as to make the obfuscator work …
The problem is next: ASP.NET engine uses class and method names for binding. So every change of those names (which oxfuscator does) results in ASP.NET parser errors in runtime.
While it is theoretically possible to change names in .aspx page when they are changed in the code-behind class this will make the obfuscation process senseless because it will be
very easy to extract obfuscated method names from .aspx file (ie it will be easy to understand that in
fgW_1 actually means Submit_OnClick )
If you still need your code at aspx.pas files to be obfuscated you can use next solution:
Move all your logic into separate classes.
Call objects and methods of those classes from you page classes.
Obfuscate classes with your logic and add Exclude attribute to your page classes.
In that case all your logic will be hidden from customers but you’ve got working asp.net project.