और यह भी, बजाय IApplicationEnvironment
इंजेक्शन करने के लिए आप PlatformServices.Default.Application.ApplicationBasePath
का उपयोग कर सकते हैं।
संपादित:
removed (see EDIT2)
EDIT2:: यहाँ एक संभव PlatformServices
के विस्तार के रूप में MapPath/UnmapPath के कार्यान्वयन है थोड़ा संशोधित, IsPathMapped()
यदि पथ मानचित्रण/unmapping है देखने के लिए के रूप में अच्छी तरह से जोड़ा कुछ चेकों के रूप में वास्तव में जरूरत है।
public static class PlatformServicesExtensions
{
public static string MapPath(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
if (services.IsPathMapped(path) == false)
{
var wwwroot = services.WwwRoot();
if (result.StartsWith("~", StringComparison.Ordinal))
{
result = result.Substring(1);
}
if (result.StartsWith("/", StringComparison.Ordinal))
{
result = result.Substring(1);
}
result = Path.Combine(wwwroot, result.Replace('/', '\\'));
}
return result;
}
public static string UnmapPath(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
if (services.IsPathMapped(path))
{
var wwwroot = services.WwwRoot();
result = result.Remove(0, wwwroot.Length);
result = result.Replace('\\', '/');
var prefix = (result.StartsWith("/", StringComparison.Ordinal) ? "~" : "~/");
result = prefix + result;
}
return result;
}
public static bool IsPathMapped(this PlatformServices services, string path)
{
var result = path ?? string.Empty;
return result.StartsWith(services.Application.ApplicationBasePath,
StringComparison.Ordinal);
}
public static string WwwRoot(this PlatformServices services)
{
// todo: take it from project.json!!!
var result = Path.Combine(services.Application.ApplicationBasePath, "wwwroot");
return result;
}
}
EDIT3:PlatformServices.WwwRoot()
वापसी वास्तविक निष्पादन पथ और .net कोर 2.0 में, यह xxx \ बिन \ डीबग \ netcoreapp2.0, जो स्पष्ट रूप से क्या आवश्यक है नहीं है डीबग मोड। इसके बजाय, PlatformServices
IHostingEnvironment
के साथ प्रतिस्थापित करें और environment.WebRootPath
का उपयोग करें।
स्रोत
2016-02-17 14:44:31
'मैपपाथ' एएसपी.नेट का हिस्सा है। –
आप अपने आवेदन के रूट पथ प्राप्त करने के लिए IAplicationEnvironment सेवा पर ApplicationBasePath प्रॉपर्टी का उपयोग कर सकते हैं ... उत्सुक, आप जिस परिदृश्य को स्वीकार करने की कोशिश कर रहे हैं वह क्या है? –
@ किरण चल्ला यह काम करता है, अद्भुत, धन्यवाद! अगर आप चाहें, तो कृपया इसे एक उत्तर के रूप में लिखें और मैं इसे स्वीकार करूंगा :) और आपके प्रश्न के संबंध में - मैं सर्वर स्टार्टअप पर अपने डेटाबेस (टेबल, फ़ंक्शंस इत्यादि) की संरचना बनाना चाहता हूं। –