我有一个Application我的global.asax继承自的类.该类有这种方法:
protected void Application_Start(object sender, EventArgs e)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
在我的理解中,这基本上是一个自动添加到事件的事件处理程序(基于方法名称[*]).我试图找出确切的事件,所以我在方法中放了一个断点并检查了调用堆栈:
Foo.DLL!Foo.Application.Application_Start(object sender = {System.Web.HttpApplicationFactory},System.EventArgs e = {System.EventArgs})
发件人是System.Web.HttpApplicationFactory,但我无法使用Visual Studio 2008中的对象浏览器或MSDN库网站上找到该类.
我在哪里可以找到有关此课程的更多信息?
谢谢!
[*]将它与Application_BeginRequest(object sender, EventArgs e)方法进行比较,该方法作为处理程序添加到类的BeginRequest事件中System.Web.HttpApplication.
现在请原谅我这是一个愚蠢的问题 - 但是......在我的ASP.NET应用程序中,我有一个global.asax文件可以捕获错误并通过电子邮件向我发送详细信息.'可以'我把global.asax放在经典ASP文件的根目录中,如果有ASP错误,它会触发global.asax吗?
再次抱歉,如果这是一个愚蠢的问题..如果没有任何想法如何我可以为经典ASP重新创建这样的东西?
我正在使用Visual Studio 2005,并直接使用其开发应用程序服务器从其中运行我的应用程序.
如果我在Application_Start中设置断点并在Session_Start中设置一个断点,则首先到达后者,我真的认为它应该是另一种方式.
有什么想法吗?
会话启动时如何在Global.asax页面事件中将Session值设置为空("")字符串?可以请任何帮助我.
我有一个 ASP.NET 项目的作业,该项目处理从 global.asax 文件存储和检索全局变量。
我的老师给了我这部分来定义变量:
Application.Add("Name", "Andrew");
Run Code Online (Sandbox Code Playgroud)
但在那之后,他有点让我悬而未决。所以我想知道是否有人愿意为我指出处理这些全局变量的正确方向。具体来说,用于在我的应用程序的不同页面中调用变量。
我的Web应用程序将外部类库用于我在许多地方使用的某些过程。我想添加到库中的一件事是此配置程序类,该类允许我加密web.config文件的某些部分。
现在,我从中调用类global.asax,它会编译,并且intellisense没有任何问题,但是在执行Web应用程序时出现此错误:
在这种情况下请求不可用
我该如何解决?
public class configurator {
private Configuration _webconfig;
public const string DPAPI = "DataProtectionConfigurationProvider";
public Configuration webconfig {
get { return _webconfig; }
set { _webconfig = webconfig; }
}
public configurator() {
webconfig = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
}
public void ProtectSection(string sectionName, string provider = DPAPI) {
ConfigurationSection section = webconfig.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected) {
section.SectionInformation.ProtectSection(provider);
webconfig.Save();
}
}
public void EncryptConnString(string protectionMode) {
ConfigurationSection section = webconfig.GetSection("connectionStrings");
section.SectionInformation.ProtectSection(protectionMode);
webconfig.Save();
}
public void …Run Code Online (Sandbox Code Playgroud) 当然,这Request.UserHostAddress办法是伟大的,但在Application_Start()该Request对象还不存在。
我想先通过用户的IP猜测用户的位置-一次-当他/她进入网站时,并为其设置默认语言环境。然后,我将在其他地方进行操作。
我认为,必须有被否决的事件Global.asax,其Request存在于它,但是我无法找到该事件...
确实,任何其他技巧都将受到赞赏...
更新:
实际上,我正在开发一个多语言的网站,并MaxMind GeoIP用来通过其IP获取用户所在的国家。因此,我想找到一种方法,以便当用户进入网站时(仅也是第一个请求),我检索他/她的国家/地区并将其存储在Session或全局变量中。
我知道我可以在其他任何地方实现我的目标,Request.UserHostAddress而且我也没有任何问题-对于这个小型应用程序,每个请求的一行开销根本不是问题。
但是我想知道是否有可能只设置一次全局变量...!?!
我有一个托管在我的本地IIS(而不是Express)上的WCF Web服务.我在其根目录中包含了一个Global.asax,它应该在那里.由于我使用Ninject与WCF扩展,类全球扩展,而不是一个HttpApplication NinjectHttpApplication(如看到这里).另外,我正在使用AutoMapper库来规避编写无聊的样板代码.出现这个问题的原因是我没有调用我为配置AutoMapper定义的静态方法,导致AutoMapper在调用Mapper.Map()时抛出异常.静态方法的调用是在Global.asax的Application_Start()方法中定义的,因为我希望每个Web服务的生命周期执行一次这些映射.顺便说一句,Ninject的CreateKernel()方法被调用就好了.我在这里错过了什么吗?我已经尝试过调试它,即使我已经将调试器附加到w3wp.exe并尝试在其正文中调用一个显式的Debugger.Break()调试,它也没有达到断点.
到目前为止它是这样的:
Global.asax中
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApp.WebHost.Global" Language="C#" %>
Run Code Online (Sandbox Code Playgroud)
的Global.asax.cs
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel();
/* various bindings */
return kernel;
}
protected void Application_Start(object sender, EventArgs e)
{
AutoMapperConfig.RegisterMappings();
}
/* rest of Global.asax methods (Session_Start, Application_BeginRequest, etc.) with empty bodies */
Run Code Online (Sandbox Code Playgroud)
RegisterMappings方法
public static class AutoMapperConfig
{
public static void RegisterMappings()
{
/* multiple calls to Mapper.CreateMap() */
Mapper.AssertConfigurationIsValid();
}
}
Run Code Online (Sandbox Code Playgroud)
Svc文件标记
<%@ …Run Code Online (Sandbox Code Playgroud) 我有一个 ASP.NET MVC (4.6.1) 网站,我们正在尝试使用 Sentry 服务对其进行监控。
根据安装文档,它只是说尽早初始化 Sentry,但他们示例的结构让我有理由怀疑是否没有更多内容。在我的 Gloabl.asax.cs 文件中,我调用包含 Sentry 初始化的自定义模型类。这是该课程的副本:
public class SentryModel
{
public static void Configure()
{
var environment = ConfigurationManager.AppSettings["Environment"];
//escape the method if we are in a development environment
if (environment.Equals("development", StringComparison.CurrentCultureIgnoreCase))
return;
Assembly web = Assembly.GetExecutingAssembly();
AssemblyName webName = web.GetName();
string myVersion = webName.Version.ToString();
string dsn_data = ConfigurationManager.ConnectionStrings["Sentry"].ConnectionString;
using (SentrySdk.Init(o =>
{
o.Dsn = new Dsn(dsn_data);
o.MaxBreadcrumbs = 50;
o.Debug = true;
o.Environment = environment;
o.Release = myVersion;
o.AttachStacktrace = true;
})) …Run Code Online (Sandbox Code Playgroud) 我想在Global.asax.cs中以编程方式注册控制器.使用MvcContrib.Castle.WindsorControllerFactory
private static IWindsorContainer _Container;
protected virtual void InitializeWindsor()
{
try
{
if (_Container == null)
{
_Container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new MvcContrib.Castle.WindsorControllerFactory(_Container));
RegisterActiveRecord();
RegisterRepositories();
RegisterServices();
RegisterControllers();
RegisterComponents();
}
Run Code Online (Sandbox Code Playgroud)
我已经做到了
private void RegisterControllers()
{
try
{
_Container.Register(
AllTypes.Of<IController>()
.FromAssembly(typeof(HomeController).Assembly)
.Configure(c => c.LifeStyle.Transient)
);
Run Code Online (Sandbox Code Playgroud)
它适用于具有默认构造函数的所有控制器.但是,我有一个带参数化construtor的控制器(LoginController).
public class LoginController : Controller
{
private IUser _User;
public LoginController(IUser objUser)
{
_User = objUser;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在浏览器中查看它时(http:// localhost:2011/Login),它会给我以下错误.
**No parameterless constructor defined for this object**
Stack Trace:
[MissingMethodException: No parameterless constructor defined for …Run Code Online (Sandbox Code Playgroud) asp.net-mvc configuration controller castle-windsor global-asax
global-asax ×10
asp.net ×5
c# ×4
asp.net-mvc ×2
.net ×1
asp-classic ×1
automapper ×1
controller ×1
events ×1
global.asa ×1
ip ×1
ninject ×1
sentry ×1
wcf ×1
web-config ×1