How Can I Find The Path To A Folder from a Controller Constructor in ASP.NET MVC?

后端 未结 3 883
野的像风
野的像风 2021-02-13 15:30

I am trying to get the path to a folder in my website root and save it to a class property when my controller constructor is called:

public TestController:Contro         


        
相关标签:
3条回答
  • 2021-02-13 15:41

    AppDomain.CurrentDomain.BaseDirectory will give you the root of your site. So:

    temp = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TheFolder");
    

    (Update thanks to Marc Gravell's comment)

    0 讨论(0)
  • 2021-02-13 15:43

    Do you actually need this path during the constructor? If you don't need it until the main page cycle begins, consider deferring it - just using a regular property; something like

    public string BasePath {
        get { return Server.MapPath("~/TheFolder/"); }
    }
    

    Then when this is used during the page cycle, it should be fine. You could cache it if you really want to, but I don't imagine this is going to be a bottleneck:

    private string basePath;
    public string BasePath {
        get {
            if(basePath == null) basePath = Server.MapPath("~/TheFolder/");
            return basePath;
        }
    }
    
    0 讨论(0)
  • 2021-02-13 16:00

    Try going through the ControllerContext. Forgive my syntax, but it should something like this:

    base.[Controller?]Context.HttpContext.Server.MapPath();
    

    If Server is still null in that situation, are you running outside of a web request (ie. in a test)?

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