كيف يمكنني تجنب فك ترميز ASP.NET (أو IIS؟) الخاص بي المشفر عن طريق الرفوف الخاص بك (مما أدى إلى 404) بدلا من اجتيازه إلى البرنامج النصي الموافقة؟

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

سؤال

أنا أعمل على قطعة من تطبيق ويب في ASP.NET MVC حيث يسجل المستخدم للعضوية باستخدام مزود عضوية SQL. عند تسجيلهم يتم وضعهم في النظام ولكن لم تتم الموافقة عليه. ثم يرسل الرمز إلكترونيا للموافقة على المستخدم مع البريد الإلكتروني المعطى.

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

ولكن عندما ينقر المستخدم على الرابط، يحصلون على الخطأ التالي:

الوصف: HTTP 404. كان يمكن إزالة المورد الذي تبحث عنه (أو أحد تبعياتها)، وقد تغير اسمه، أو غير متاح مؤقتا. يرجى مراجعة عنوان URL التالي وتأكد من تهجئة بشكل صحيح.

عنوان URL المطلوب: / الموافقة / k / 9ihry43os =

والسؤال هو، إذا كنت عنوان URL ترميز الرابط قبل أن أرسلها، فلماذا فكفيه قبل أن يحاول الاتصال بالعمل؟ عنوان URL في متصفحي هو في الواقع "http: // localhost: 1091 / approve / k٪ 2F9IHRY43OS٪ 3Dعندما أحصل على الخطأ. يتم إعداد التوجيه الخاص بي بشكل صحيح، لكنه لا يمرأ فقط "/" في السلسلة المشفرة في عنوان URL (لأنه لا ينبغي أن يكون هناك على أي حال.)

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

المحلول

يمكنك تشفيرها باسم Base64 بدلا من استخدام Urlencode.

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