Wal*_*eed 6 .net c# asp.net webforms
我实现了一种调用函数ProcessJob的作业调度.现在在这个方法里面我需要为我的一个页面生成url,即DoanloadPage.aspx?some_params.该网址通过电子邮件发送给用户,当用户点击该链接时,它将转到该页面.
这里的问题是我没有在Web请求方法中生成url,或者我没有访问Request对象的权限.需要在自定义类中生成URL,该类是线程化的,即不在Web请求中.
所以我不能使用这些解决方案:
HostingEnvironment.MapPath("test.aspx");
VirtualPathUtility.ToAbsolute("123.aspx");
HttpContext.Current.Request.Url.Authority;
Run Code Online (Sandbox Code Playgroud)
这些都不起作用,因为我认为它们都以某种方式依赖于当前的请求或会话.那么我如何在我的代码中为我的应用程序生成网址,以便我可以随意使用它们.
如果您的方法无法使用HttpContext.Current.Request.Url,例如,如果它是后台计划任务,那么您可以使用以下选项之一:
如果您的代码托管在同一个 ASP.NET 应用程序中,您可以在第一个请求中将站点的站点域名传递给您的类。为此,您需要处理Application_BeginRequest事件并从中获取域HttpContext.Current.Request.Url,然后将其传递给您的类,或将其存储在应用程序范围存储中。您可以在这篇文章或原始文章中找到实现。
注意:代码在SO中可用,所以这里不再重复代码。
如果您的代码未托管在同一个 ASP.NET 应用程序中,或者出于任何原因您不想依赖 ASP.NET Application_BeginRequest,则作为另一个选项,您可以将站点域名存储在设置中(例如 app.condig 或 web.xml 中的 appsettigs)。配置(如果是网络应用程序)并在您的代码中使用它。