Determine the URL hostname without using HttpContext.Current?

后端 未结 4 1683
孤独总比滥情好
孤独总比滥情好 2021-02-19 04:32

Using the current request I can get the URL hostname with:

HttpContext.Current.Request.Url.Host

But - I need to determine the URL hostname with

相关标签:
4条回答
  • 2021-02-19 04:45

    If you know the host at the moment you're setting up the event handler then you should be able to do something like (code not actually tested):

    string host = HttpContext.Current.Request.Url.Host;
    var dep = new SqlDependency(cmd);
    dep.OnChange += ((sender, args) =>
    {
        DoStuff(host);
    });
    
    0 讨论(0)
  • 2021-02-19 04:51

    If you are running this from a web application, and it is all managed code then HttpContext must exist. Does your child library (assuming your managed code is in a library) have a reference to System.Web? If not, consider adding this reference. From that point you should be able to access the HttpContext directly by using the fully qualified namespace:

    System.Web.HttpContext.Current.Request.Url.Host
    

    In any case, unless your code is unmanaged or your context truly does not originate with a web application, HttpContext should be available at every point while the thread is alive.

    Edit:
    Based on reading your comment below, it sounds like the SqlDependency is being fired independently. While it's on the same thread, it's not being fired directly by the request. Since all you're looking for is the host url, it's not inconceivable that you can create an application variable or a static variable to hold this information in the event that it is needed for a dependency.

    Also something I have seen is that while HttpContext.Current may not be available, HttpContext.Request might be. These should be the same object, but they may not necessarily be. It's possible that the Host may be found there.

    0 讨论(0)
  • 2021-02-19 04:59

    How about

    Environment.MachineName
    
    0 讨论(0)
  • 2021-02-19 05:12

    You should use the IIS api to query the information from the website you're looking for. Because depending on the IIS configuration your URL or Hostname could be differing. (Think about hostheaders, ports, protocols and stuff like this.

    A introduction for IIS API could be found at http://learn.iis.net/page.aspx/165/how-to-use-microsoftwebadministration/

    0 讨论(0)
提交回复
热议问题