本文整理汇总了C#中System.Web.HttpApplication.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# HttpApplication.Dispose方法的具体用法?C# HttpApplication.Dispose怎么用?C# HttpApplication.Dispose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Web.HttpApplication
的用法示例。
在下文中一共展示了HttpApplication.Dispose方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HttpApplicationProxy
/// <summary>
/// Initializes a new instance of the <see cref="T:HttpApplicationProxy"/> class.
/// </summary>
/// <param name="context">The HTTP context for the application.</param>
/// <param name="namedHttpModules">The optional array of named HTTP modules to add to the application.</param>
/// <exception cref="System.ArgumentNullException"><paramref name="context"/> is a null reference.</exception>
public HttpApplicationProxy(HttpContext context, params Pair<String, IHttpModule>[] namedHttpModules)
: base()
{
if (context == null) {
throw new ArgumentNullException("context");
}
HttpApplication application = new HttpApplication();
try {
// Add the HTTP modules.
if (namedHttpModules != null && namedHttpModules.Length > 0) {
HttpModuleCollection httpModuleCollection = (HttpModuleCollection)typeof(HttpModuleCollection).CreateInstance();
foreach (Pair<String, IHttpModule> namedHttpModule in namedHttpModules) {
if (namedHttpModule != null && namedHttpModule.First != null && namedHttpModule.Second != null) {
httpModuleCollection.InvokeMethod("AddModule", namedHttpModule.First, namedHttpModule.Second);
}
}
application.SetFieldValue("_moduleCollection", httpModuleCollection);
}
// Tie the HTTP context to the HTTP application.
application.SetFieldValue("_context", context);
application.SetFieldValue("_stepManager", typeof(HttpApplication).FindNestedType("ApplicationStepManager").CreateInstance(application));
context.ApplicationInstance = application;
}
catch {
application.Dispose();
throw;
}
// Save the state.
this._application = application;
}
示例2: SetupandInvokeEntryPoint
/// <summary>
/// Sets up and invokes an entry point on an <see cref="HttpApplication"/> implementer found
/// by probing the given bin path.
/// </summary>
/// <param name="logger">The logger to use when probing.</param>
/// <param name="binPath">The bin path to probe.</param>
private void SetupandInvokeEntryPoint(ILogger logger, string binPath)
{
if (Directory.Exists(binPath))
{
HttpApplicationProbe probe = new HttpApplicationProbe(logger, binPath);
Type type = HttpApplicationProbe.FindApplicationTypes(probe.FindApplicationAssemblies()).FirstOrDefault();
if (type != null)
{
logger.Info("Found an HTTP application requiring startup: {0}.", type.FullName);
HttpApplication httpApplication = null;
try
{
httpApplication = (HttpApplication)Activator.CreateInstance(type);
}
catch (Exception ex)
{
logger.Error(ex, "Failed to create an instance of the HTTP application {0}.", type.FullName);
}
if (httpApplication != null)
{
try
{
MethodInfo entryPoint = HttpApplicationProbe.FindEntryPoint(type);
if (entryPoint != null)
{
logger.Info("Invoking entry point for HTTP application {0}.", type.FullName);
this.InvokeEventHandler(httpApplication, entryPoint);
}
else
{
logger.Info("No entry point found for HTTP application {0}.", type.FullName);
}
this.httpApplication = httpApplication;
httpApplication = null;
}
catch (Exception ex)
{
logger.Error(ex, "Failed to invoke the entry point for HTTP application {0}.", type.FullName);
if (ex.InnerException != null)
{
logger.Error(ex.InnerException);
}
}
finally
{
if (httpApplication != null)
{
httpApplication.Dispose();
}
}
}
}
}
}
示例3: DisposeHttpApplication
/// <summary>
/// Disposes of the HTTP applications that was created as an entry point.
/// </summary>
private void DisposeHttpApplication()
{
HttpApplication httpApplication = this.httpApplication;
this.httpApplication = null;
if (httpApplication != null)
{
try
{
MethodInfo method = HttpApplicationProbe.FindExitPoint(httpApplication.GetType());
if (method != null)
{
this.logger.Info("Invoking exit point for HTTP application {0}.", httpApplication.GetType().FullName);
this.InvokeEventHandler(httpApplication, method);
}
else
{
this.logger.Info("No exit point found for HTTP application {0}.", httpApplication.GetType().FullName);
}
}
finally
{
httpApplication.Dispose();
}
}
}
示例4: Recycle
internal static void Recycle (HttpApplication app)
{
bool dispose = false;
HttpApplicationFactory factory = theFactory;
if (Interlocked.CompareExchange (ref factory.next_free, app, null) == null)
return;
lock (factory.available) {
if (factory.available.Count < 64)
factory.available.Push (app);
else
dispose = true;
}
if (dispose)
app.Dispose ();
}
示例5: RecycleForSessionEnd
internal static void RecycleForSessionEnd (HttpApplication app)
{
bool dispose = false;
HttpApplicationFactory factory = theFactory;
lock (factory.available_for_end) {
if (factory.available_for_end.Count < 64)
factory.available_for_end.Push (app);
else
dispose = true;
}
if (dispose)
app.Dispose ();
}
示例6: Methods_Deny_Unrestricted
public void Methods_Deny_Unrestricted ()
{
HttpApplication app = new HttpApplication ();
app.CompleteRequest ();
app.GetVaryByCustomString (null, String.Empty);
app.Dispose ();
}