সার্ভার.ম্যাপপথ ("।"), সার্ভার.ম্যাপপথ ("~"), সার্ভার.ম্যাপপথ (@ "\"), সার্ভার.ম্যাপপথ ("/")। পার্থক্য কি?


446

যে কেউ এর মধ্যে পার্থক্য ব্যাখ্যা করতে পারবেন Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\")এবং Server.MapPath("/")?

উত্তর:


809

সার্ভার.ম্যাপপথ কোনও শারীরিক ডিরেক্টরিতে মানচিত্রের সম্পর্কিত বা ভার্চুয়াল পাথ নির্দিষ্ট করে ।

  • Server.MapPath(".")1 এক্সিকিউট হওয়া ফাইলটির বর্তমান শারীরিক ডিরেক্টরি (যেমন এসপিএক্স) প্রদান করে
  • Server.MapPath("..") মূল ডিরেক্টরি প্রদান করে
  • Server.MapPath("~") অ্যাপ্লিকেশনটির মূলটিতে শারীরিক পথ ফেরায়
  • Server.MapPath("/") ডোমেন নামের মূলটিতে শারীরিক পথ ফেরায় (প্রয়োজনীয়ভাবে অ্যাপ্লিকেশনটির মূলের মতো নয়)

একটি উদাহরণ:

ধরা যাক আপনি কোনও ওয়েব সাইট অ্যাপ্লিকেশনটিকে ( http://www.example.com/) নির্দেশ করেছেন

C:\Inetpub\wwwroot

এবং আপনার শপ অ্যাপ্লিকেশন ইনস্টল করে (আইআইএস-এ ভার্চুয়াল ডিরেক্টরি হিসাবে সাব ওয়েব, অ্যাপ্লিকেশন হিসাবে চিহ্নিত)

D:\WebApps\shop

উদাহরণস্বরূপ, যদি আপনি Server.MapPath()নিম্নলিখিত অনুরোধটি কল করেন:

http://www.example.com/shop/products/GetProduct.aspx?id=2342

তারপর:

  • Server.MapPath(".")1 রিটার্নD:\WebApps\shop\products
  • Server.MapPath("..") আয় D:\WebApps\shop
  • Server.MapPath("~") আয় D:\WebApps\shop
  • Server.MapPath("/") আয় C:\Inetpub\wwwroot
  • Server.MapPath("/shop") আয় D:\WebApps\shop

যদি পথটি একটি ফরোয়ার্ড স্ল্যাশ ( /) বা পিছনে স্ল্যাশ ( \) দিয়ে শুরু হয় , তবে MapPath()এমন পথটি ফেরত দেয় যেন পথটি একটি পূর্ণ, ভার্চুয়াল পাথ।

যদি পথটি স্ল্যাশ দিয়ে শুরু না হয় তবে MapPath() হলে, অনুরোধটির প্রক্রিয়াজাত হওয়ার ডিরেক্টরিটির সাথে সম্পর্কিত একটি পাথ ফেরত দেয়।

দ্রষ্টব্য: সি # তে, @ভারব্যাটিম আক্ষরিক স্ট্রিং অপারেটরের অর্থ হ'ল স্ট্রিংটি "যেমন রয়েছে" ব্যবহার করা উচিত এবং পালানোর ক্রমগুলির জন্য প্রক্রিয়া করা উচিত নয়।

পাদটিকা

  1. Server.MapPath(null)এবং এই প্রভাবও উত্পাদনServer.MapPath("") করবে ।

44
চমৎকার। আমরা সার্ভার. ব্লাডি.ম্যাপপথের সাথে লড়াই করছি। ধন্যবাদ
জিবিএন

26
ব্যবহার করে আপনি আরও ভাল থাকবে HostingEnvironment.MapPathযেমন প্রয়োজন হয় না HttpContext: stackoverflow.com/q/944219/3205
skolima

25

@ স্প্ল্যাটনে এর উত্তরটি একটু বাড়ানোর জন্য:

MapPath(string virtualPath) নিম্নলিখিত কল:

public string MapPath(string virtualPath)
{
    return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}

MapPath(VirtualPath virtualPath)পরিবর্তিত কলগুলিতে MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)নিম্নলিখিতটি রয়েছে:

//...
if (virtualPath == null)
{
    virtualPath = VirtualPath.Create(".");
}
//...

সুতরাং আপনি যদি কল করেন MapPath(null)বা MapPath(""), আপনি কার্যকরভাবে কল করছেনMapPath(".")


4

1) Server.MapPath(".")- aspxসম্পাদিত হওয়া ফাইলের (বর্তমান ) "বর্তমান শারীরিক ডিরেক্টরি" প্রদান করে ।

যাত্রা। অনুমান করা D:\WebApplications\Collage\Departments

2) Server.MapPath("..")- "মূল ডিরেক্টরি" ফিরিয়ে দেয়

যাত্রা। D:\WebApplications\Collage

3) Server.MapPath("~")- "প্রয়োগের মূলের শারীরিক পথ" প্রদান করে

যাত্রা। D:\WebApplications\Collage

4) Server.MapPath("/")- ডোমেন নামের মূলটিতে শারীরিক পথটি ফেরত দেয়

যাত্রা। C:\Inetpub\wwwroot

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.