2017-05-16 4 views
8

के लिए एएसपी शुद्ध कोर वैकल्पिक तरीका में निरपेक्ष पथ प्राप्त करने के लिए, लेकिन यह नहीं करता है उचित परिणाम नहीं देते हैं।कैसे कैसे <strong>Server.MapPath के लिए एएसपी शुद्ध कोर वैकल्पिक तरीका में निरपेक्ष पथ पाने के लिए</strong></p> <p>मैं <strong>IHostingEnvironment</strong> उपयोग करने के लिए कोशिश की है Server.MapPath

IHostingEnvironment env = new HostingEnvironment(); 
var str1 = env.ContentRootPath; // Null 
var str2 = env.WebRootPath; // Null, both doesn't give any result 

मैं मैं इस निरपेक्ष पथ प्राप्त करने की आवश्यकता wwwroot फ़ोल्डर में एक छवि फ़ाइल (Sample.PNG) है।

+0

निर्भर वर्ग में एक निर्भरता के रूप में इसकी सुई कंटेनर के साथ सेवा रजिस्टर करने के लिए सुनिश्चित करें। ढांचा आपके लिए इसे पॉप्युलेट करेगा। – Nkosi

उत्तर

18

निर्भर वर्ग में निर्भरता के रूप में IHostingEnvironment इंजेक्ट करें। ढांचा पॉप्युलेट आप

public class HomeController : Controller { 
    private IHostingEnvironment _hostingEnvironment; 

    public HomeController(IHostingEnvironment environment) { 
     _hostingEnvironment = environment; 
    } 

    [HttpGet] 
    public IActionResult Get() { 
     var path = Path.Combine(_hostingEnvironment.WebRootPath, "Sample.PNG"); 
     return View(); 
    } 
} 

आप एक कदम आगे जा सकते हैं और आप अपने मार्ग प्रदाता

public interface IPathProvider { 
    string MapPath(string path); 
} 

public class PathProvider : IPathProvider { 
    private IHostingEnvironment _hostingEnvironment; 

    public PathProvider(IHostingEnvironment environment) { 
     _hostingEnvironment = environment; 
    } 

    public string MapPath(string path) { 
     var filePath = Path.Combine(_hostingEnvironment.WebRootPath, path); 
     return filePath; 
    } 
} 

बना सकते हैं और निर्भर वर्गों में IPathProvider इंजेक्षन के लिए होगा।

public class HomeController : Controller { 
    private IPathProvider pathProvider; 

    public HomeController(IPathProvider pathProvider) { 
     this.pathProvider = pathProvider; 
    } 

    [HttpGet] 
    public IActionResult Get() { 
     var path = pathProvider.MapPath("Sample.PNG"); 
     return View(); 
    } 
} 

services.AddSingleton<IPathProvider, PathProvider>(); 
+1

प्रतिभा! आपने अभी मुझे काम के घंटे बचाए हैं। – War10ck

संबंधित मुद्दे