HttpContext.Current Doesn't Exist In IIS7 Integrated Mode?
Sep 16, 2010
I just switched from Classic Mode to Integrated Mode and now HttpContext doesn't seem to exist in my ASP.NET application. I can't even add a Watch to HttpContext nor to HttpContext.Current.
I'm using FluorineFX where in the Web.config a HttpModule is defined. Apparently, in IIS7 Integrated Mode, these HttpModules need to be added to the Modules section in System.WebServer. I have done this, but now I'm having this HttpContext problem...
Code is in a simple service class being called by Flex (amf).
if (HttpContext.Current.User.Identity != null)
{
...
Web.Config (I don't know how to display this properly in Stack...):
<?xml version="1.0" encoding="utf-8" ?>
we are running a complex 64-bit ASP.NET 2.0 application on W2008 R2 Standard and stress tests done with VS2008 Team System have indicated that integrated pipeline mode is 30% slower than classic mode.
We have compared the application traces extensively and it appears that integrated mode is uniformly slower than classic. That is, there is no single point that causes delays in integrated mode.
This is quite the opposite to everything Microsoft says about the integrated pipeline, so it might be that there is something quite wrong with the configuration of the integrated mode or the server. But we have not found any settings that would have any effect on this. Some complaints that Sharepoint and reporting services are slower in integrated mode can be found, but our application does not use them so this is quite likely unrelated.
I fill a third-pard component variable in Global.Application_BeginRequest(). Everything is fine until I set IIS7 into the Integrated mode. In that case the method Application_BeginRequest() is not called (Application_Start is ok).May be some module is registered wrong?(I have found a same problem here on forum, but without a solution:[URL]
In IIS6 the scenario below is working perfectly.I have an HttpModule called URLRedirect which examines URLS and by using RegEx rewrites of applicable. An example is a URL "/doc47.pdf" gets redirected to docpdf.ashx?id=47 Then the docpdf.ashx used the id value and, using a database builds an application/pdf document and returns it. Since I need to validate that the user has access to the data, the first line of the ProcessRequest(HttpContext context) function is:if (context.User.Identity.IsAuthenticated) ..... This is where the problem occurs, but more details first.
On a webpage, access to which is restricted to lgged on users who meet certain criteria there is a link which allows the user to present the page as a PDF document. This is achieved by using javascript to open a popup window using the window.open("/doc47.pdf", ... ) function.This all works fine under IIS6 and under IIS7 if I change the mode to Classic. But, under IIS7 in integrated mode, the following happens.The line in doc.ashx described above raises an exception because context.User == null. But, and this is interesting, if instead of using the link that opens the popup window I instead type /doc.pdf?id=47 into the address bar, the PDF document displays correctly.So this indicates to me that the URLRedirect Module is somehow losing the logged on user information.
am trying to write an HttpModule that will work in IIS7 with integrated pipeline mode AppPool. Within this module I need to access Session variables and to be able to capture the Session Start and End events. I have found a couple of articles on this topic that indicate the need to modify the behavior of the HttpHandler in PostAcquireRequestState to force the Session for the context to be initialized. The article I am using as a template is posted here:[URL]In my case I am getting the following error:
[NullReferenceException: Object reference not set to an instance of an object.] System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30 System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112 System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616
I believe that this error implies a problem with attempting to attach an event handler multiple times. I am aware that the modules Init function can be called more than once and have set a static initialization flag which ensures that I will only ever attach the event handler once.In the most condensed form my code is as follows:
public class HttpModule : IHttpModule, IRequiresSessionState
my application in vs2005 / 2.0 framework , right now i change it with VSD08 /3.5 framework according when i change it open it with 08 at first time it get ask me ( you want to convert the application framework 2.0 to 3.5 ) i said yes , after that i was trying to run the application it get works on that machine means on ( locahost) but not able to access that on netowork its shows an error:
The name 'xxx' does not exist in the current context ( if i try to run any function within app_code ) then it shows me shuch error i wan also rebuild my appliciton , but noting get happen shall i create a new project and then copy my old code?
I have Called a Function " GetPhotos" from Designer Page (source). Getphotos() is in Code-behind Page. It runs well When i only Build the Application. But when i Publish the same application using "fixedName and single page Assemblies" option Enable, it Returns an Error
Compiler Error Message: CS0103: The name 'GetPhotos' does not exist in the current context.
i have a Class named Helper.cs inside my App_Code folder. And i get this error:
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: CS0103: The name 'Helper' does not exist in the current context
Source Error:
[Code]....
And i know my compiler recognizes the Helper class because the 'Helper' is colored in cyan... means is known by the compiler. What am i doing wrong?
I have a PHP website and I am looking to convert it into ASP.NET. So I am learning ASP.NET and I needed a way to upload multiple files to the server. So I ran across this tutorial: [URL] I did everything correct, but I get this error:
Compiler Error Message: CS0103: The name 'Path' does not exist in the current context
Source Error: [Code]....
Source File: c:UsersUser1DesktopUweaveLigues Hockey SimulesViewsAdminFormIndex.aspx Line: 18
im getting this error CS0103: The name 'ProjectName does not exist in the current context, im getting this error on Global.asax. i tried to clean and rebuild but its not working, please tell me how to resolve it?
I am working on a contact form. i am getting an error below, here is my code:
[Code]....
And here is the error i'm getting:
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: CS0103: The name 'txtEmail' does not exist in the current contextSource
Error:
[Code]....
Line 20: try Line 21: { Line 22: MailAddress fromAddress = new MailAddress(txtEmail.Text, txtFirstName.Text + " " + txtLastName.Text); Line 23: Line 24: // You can specify the host name or ipaddress of your server Source File: c:HostingSpacesartofmouldingartofmoulding.comwwwrootcontact.aspx.cs Line: 22
CS0103: The name 'lblRegion' does not exist in the current context
Source Error:
[Code]....
Line 31: {Line 32: Line 33: lblRegion.Text = dt.Rows[0]["RegionName"].ToString();Line 34: lblCountry.Text = dt.Rows[0]["CountryName"].ToString();Line 35: lblCountryCode.Text = dt.Rows[0]["CountryCode"].ToString();
this is source code: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Net; using System.Xml; public partial class CSharp : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Get IP Address string ipaddress; ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (ipaddress == "" || ipaddress == null) ipaddress = Request.ServerVariables["REMOTE_ADDR"]; DataTable dt = GetLocation(ipaddress); if (dt != null) { if (dt.Rows.Count > 0) { lblCity.Text = dt.Rows[0]["City"].ToString(); lblRegion.Text = dt.Rows[0]["RegionName"].ToString(); lblCountry.Text = dt.Rows[0]["CountryName"].ToString(); lblCountryCode.Text = dt.Rows[0]["CountryCode"].ToString(); } else { } } } private DataTable GetLocation(string ipaddress) { //Create a WebRequest WebRequest rssReq = WebRequest.Create("[URL]xml/" + ipaddress); //Create a Proxy WebProxy px = new WebProxy("[URL]+ ipaddress, true); //Assign the proxy to the WebRequest rssReq.Proxy = px; //Set the timeout in Seconds for the WebRequest rssReq.Timeout = 2000; try { //Get the WebResponse WebResponse rep = rssReq.GetResponse(); //Read the Response in a XMLTextReader XmlTextReader xtr = new XmlTextReader(rep.GetResponseStream()); //Create a new DataSet DataSet ds = new DataSet(); //Read the Response into the DataSet ds.ReadXml(xtr); return ds.Tables[0]; } catch { return null; } } }
I lifted some nice code to handle memberships, but I want to add a customer specific field. My issue is how to reference my class from the inline c# code.
[Code]....
The problem is the line csUserProperties.AddNew(intUserId, lngCustomerId); -- I get the error "The name 'csUserProperties' does not exist in the current context. I have <%@ Import Namespace="csUserProperties" %> at the top of the file. I also tried everything with no namespace in the class below.
I have a static class with serveral static methods. In these methods, I'm trying to access the current thread's context using HttpContext.Current. For example:
var userName = HttpContext.Current.User.Identity.Name;
However, when I do that, I receive a NullReferenceException, the infamous "Object reference not set to an instance of an object."
After some changes in web.config now IIS allows characters like ":" in URL but it makes some modifications. For example:
http://localhost/a///b => http://localhost/a/b (remove all slashes but one) http://localhost/a => http://localhost/a/b (changes backslash with slash) ... I want URL string from within a HttpHandler (I use Request.RawUrl) as it is without any change.
Firstly there's a great overview of the IIS7 HTTP request lifecycle and various settings that affect performance here:
ASP.NET Thread Usage on IIS 7.0 and 6.0
Very specifically though, in dotNet 4 the defaults for maxConcurrentRequestsPerCPU and requestsQueueLimit are set to 5000. E.g. equivalent to: (in aspnet.config):[code]....
Seems to me that on a multi-CPU/core server the requestQueueLimit here will always be invoked well berfore the 'perCPU' limit. Thus, if a max of 5000 requests per CPU is what you actually want then I would expect that the requestQueueLimit needs to be increased to 5000 * CPUCount or just disabled altogether.
Is my interpretation correct? If so can I disable requestQueueLimit? (set it to zero?). The documentation on this setting doesn't appear to address this question (so maybe I'm missing something or misreading?)
** side note from the above article: The requestQueueLimit is poorly named. It actually limits the maximum number of requests that can be serviced by ASP.NET concurrently. This includes both requests that are queued and requests that are executing. If the "Requests Current" performance counter exceeds requestQueueLimit, new incoming requests will be rejected with a 503 status code)
i'm using an example in which i can fake the session.It's for use in a unittest of a mvc controller.In the test i create a controller and then i do this:
FakeHttpContext httpctx = new FakeHttpContext(null,null,null,null,mSessionItems ); ControllerContext ctx2 = new ControllerContext(httpctx,new RouteData(), target);
here mSessionItems is my session and target is my instance of a controller,and indeed, when i'm in a controller reading this.ControllerContext.HttpContext.Session, i have a session, great!but.... i also read the session outside the controller, and there i use HttpContext.Current.Session, and that is null (or actualy, the HttpContext.Current is null).
Is it possible to check if our code is executing in Integrated Pipeline Mode or not?
There are some ASP.NET class properties that only work in Integrated Pipeline Mode, and I want to avoid raising an exception if there is a way to test if our code is executing in that environment or not.
Generally we should have control of our AppPools and be able to force the Managed Pipeline Mode. In my case I don't have control and would like to implement the code behind code a little differently based on the Managed Pipeline Mode (Integrated vs Classic). I just don't know how to detect this. Is there a simple way to do it from within the code behind page?
Ultimately, we need to know if version 8.0 of the .net Sql ReportViewer control is compatible with IIS7 running in Integrated Pipeline Mode.Regardless of the countless forum posts and articles we've read and suggestions we've tried, we've been unable to get this combination to work.
We're in the process of upgrading our websites. We're having trouble with using the 8.0 version of the ReportViewer control with IIS 7 in Integrated mode. Below is a summary of our previous setup and what we're attempting to upgrade/change to.
Our previous setup:IIS 7 Classic Pipeline Mode.Net Framework 3.5 ReportViewer 8.0 Local Mode (control used within websites - no separate Sql Reporting Server)
Attempting to upgrade to IIS 7 Integrated Pipeline Mode.Net Framework 4.0 ReportViewer 8.0 Local Mode - NO CHANGE
Our sites are all working fine except for the use of the ReportViewer control. We're not ready to upgrade our reports to version 10.0 so we wanted to continue using version 8.0.
Since we're now using the Integrated pipeline mode of IIS7, we changed our root level web.config files of our websites to contain the handler for the report viewer in the system.webServer/handlers section instead of the system.web/httpHandlers section.We're receiving the following error when attempting to access a page that contains the ReportViewer control,
Microsoft.Reporting.WebForms.ReportViewerHandlerNotRegisteredException: The Report Viewer Web Control HTTP Handler has not been registered in the application's web.config file. Add <add verb="*" path="Reserved.ReportViewerWebControl.axd" type
PublicKeyToken=b03f5f7f11d50a3a" /> to the system.web/httpHandlers section of the web.config file.We can't add the handler to the system.web/httpHandlers section of the web.config file since we're running in IIS7 Integrated Pipeline Mode.
We've tried both manually modifying the web.config file to include the handler in the system.webServer/handlers section as well as adding it via IIS. Both methods produce the same result.So, is version 8.0 of the ReportViewer control not compatible with IIS7 in Integrated Pipeline Mode? If it is compatible, what are we doing wrong? If it is not compatible, is version 9.0 of the ReportViewer control compatible?Here are the pertinent sections of our web.config files: