سؤال

لجعله أسهل بالنسبة webapp لتبادل الملفات مع تطبيق آخر على ملقم مختلف, أنا باستخدام قاعدة href الوسم في الصفحة الرئيسية.العديد من الناس قد اكتشف هذا يكسر يبفورم مسارات.أنا أعمل على شكل محول الدرجة ولكن لست متأكدا من كيفية الحصول على المطلق مسار url.حاليا, البرنامج ضمنية إلى استخدام شيء أقرب إلى :

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

ومن الجدير بالذكر أن أنا حاليا اختبار على بلدي المحلية ملقم IIS ، لذلك هناك ميل غريب على الكثير من الأشياء التي كنت قد حاولت استخدام في أمر ما المسار المطلق لا تشمل اسم المجال (المحلية IIS غير مرئية من الخارج).مما يعني أنها ليست مطلقة المسار وبالتالي قاعدة href سوف تدمر ذلك.

هل هناك طريقة جيدة للتعامل مع هذا النوع الذي سوف تعمل محليا بدون hardcoding ولكن أيضا تعمل بشكل صحيح عند تحميلها على الخادم ؟ أنا أفضل أن تجنب أي شيء ينطوي على القيام بشيء مختلف على جانب الملقم نسخ.

نعم أنا أدرك أنني يمكن استخدام ويب منفصلة.التكوين الملفات محليا على الملقم للحصول على هذه المعلومات ولكن هذا هو قبيح و ينتهك الجافة.

هل كانت مفيدة؟

المحلول

لقد استخدمت هذا في الماضي:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

نصائح أخرى

آخر العمر ولكن هنا هو آخر أقل قليلا مطول طريقة

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

لقد استخدمت التالية وعملت لي كل من العميل والخادم.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

كود :

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top