تحديد الموقع مطلقة ، مؤهل بشكل كامل رابط في asp.net

StackOverflow https://stackoverflow.com/questions/121962

  •  02-07-2019
  •  | 
  •  

سؤال

كيف يمكنني باستمرار الحصول على المطلق ، مؤهل بشكل كامل الجذر أو قاعدة url للموقع بغض النظر عن ما إذا كان الموقع هو في دليل ظاهري و بغض النظر من أين المدونة في الدليل هيكل ؟ لقد حاولت كل متغير وظيفة أستطيع أن أفكر و لم أجد وسيلة جيدة.

كنت تريد أن تكون قادرة على الحصول على رابط من الموقع الحالي ، أي http://www.example.com أو إذا كان الدليل الظاهري ، http://www.example.com/DNN/


وهنا بعض من الأشياء التي كنت قد حاولت والنتيجة.الوحيد الذي يشمل كل قطعة التي أريد (http://localhost:4471/DNN441) هو الطلب.URI.AbsoluteURI:

  • طلب.PhysicalPath:C:\WebSites\DNN441\Default.aspx
  • طلب.ApplicationPath:/DNN441
  • طلب.PhysicalApplicationPath:C:\WebSites\DNN441\
  • MapPath:C:\WebSites\DNN441\DesktopModules\Articles emplates\Default.aspx
  • RawURL:/DNN441/ModuleTesting/مقالات/tabid/56/ctl/تفاصيل/منتصف/374/ItemID/1/Default.aspx
  • طلب.Url.AbsoluteUri: http://localhost:4471/DNN441/Default.aspx
  • طلب.Url.AbsolutePath:/DNN441/Default.aspx
  • طلب.Url.LocalPath:/DNN441/Default.aspx الطلب.Url.المضيف:localhost
  • طلب.Url.PathAndQuery:/DNN441/Default.aspx?TabId=56&ctl=Details&mid=374&ItemID=1
هل كانت مفيدة؟

المحلول

في القراءة من خلال الإجابة الواردة في ريك Strahl بلوق وجدت ما كنت بحاجة إليه هو بسيط جدا.تحتاج أولا إلى تحديد المسار النسبي (وهو بالنسبة لي كان الجزء السهل) ، وتمرير ذلك إلى وظيفة محددة أدناه:

VB.NET

Public Shared Function GetFullyQualifiedURL(ByVal s as string) As String
   Dim Result as URI = New URI(HttpContext.Current.Request.Url, s)
   Return Result.ToString
End Function

C#

public static string GetFullyQualifiedURL(string s) {
    Uri Result = new Uri(HttpContext.Current.Request.Url, s);
    return Result.ToString();
}

نصائح أخرى

الجواب المقبول يفترض أن الطلب الحالي هو بالفعل في الملقم الظاهري/الجذر.جرب هذا:

Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath

هناك بعض ممتازة مناقشة الأفكار على ريك Strahl بلوق

تحرير:وأود أن أضيف أن أفكار في العمل مع أو من دون صالح HttpContext.

EDIT2:هنا تعليق محدد / رمز على أنه بعد أن يجيب على السؤال

وجدت هذا الرمز هنا:

string appPath = null;

appPath = string.Format("{0}://{1}{2}{3}",
    Request.Url.Scheme,
    Request.Url.Host,
    Request.Url.Port == 80 ? string.Empty : ":" + Request.Url.Port,
    Request.ApplicationPath);

هل حاولت AppSettings.RootUrl التي عادة ما تكون تكوينها في شبكة الإنترنت.config الملف ؟

تتحدث عن استخدام الروابط ؟

أنا أفعل هذا <a href='/'>goes to root</a> سوف يأخذك إلى الملف الافتراضي ويب الجذر.

الآن من جانب العميل ، والقيام ، ويمر "~/" التحكم::ResolveUrl الطريقة سوف توفر لك ما تبحث عنه.(http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx)

ليس لدي أي وسيلة للتحقق من هذا في هذه اللحظة لكن هل حاولت "طلب.Url.AbsoluteUri" من جهاز آخر ؟

يحدث لي ذلك بقدر جهازك تشعر انها المتصفح يطلب من المضيف المحلي.

أنا يمكن أن تكون خاطئة ولكن على الرغم اعتقد طلب نسبة إلى المتصفح وليس على خادم الويب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top