كيف أقوم بتنسيق HttpHandler URI "بسلاسة"؟
-
02-07-2019 - |
سؤال
أنا فقط أتدخل في طرق خدمة الويب RESTful في C# باستخدام ASP.Net 2.0 وقد تمكنت (عبر مكتبة فئة، إشارة إلى ملف dll الذي أنتجه السابق وبعض التعديلات على web.config الخاص بي) من إقناع تنسيق URI مثل ذلك:
http://localhost/DevelopmentProject/testhandler/?input=thisismyinput
والذي عادةً ما يُرجع الإدخال كقطعة من النص مع البادئة التوضيحية "كان إدخالك:""
كان لدي انطباع بأنني أستطيع جعل URI أكثر سلاسة إلى شيء أكثر على غرار:
http://localhost/DevelopmentProject/testhandler/thisismyinput
والحصول على نفس النتيجة ولكن ليس لديك أي فكرة عن كيفية التخلص من "?input=" المزعجة
الإدخال إلى قسم httphandlers في web.config الخاص بي هو (تمت إضافة المسافات حتى يتم عرض الكود):
< إضافة فعل = "*" مسار = "testhandler/*" نوع = "HandlerLib.testhandler، HandlerLib"/ >
أقوم بتشغيل IIS 5.1 على الجهاز المحلي، فهل سيؤدي ذلك إلى حدوث مشكلة؟
في الأساس أين أخطئ؟
شكرًا.
المحلول 3
نصائح أخرى
أحد الحلول هو استخدام UrlRewriting لإعادة كتابة عنوان URL إلى ما تحتاجه.
أنا أستعمل http://urlrewriter.net/ للقيام بكل ما عندي من إعادة الكتابة، ويمكنك إعداد شيء مثل هذا في السيناريو الخاص بك
<rewriter>
<rewrite
url="DevelopmentProject/testhandler/([\w]+)"
to="DevelopmentProject/testhandler/?input=$1" />
</rewriter>
سيظل هذا "http://localhost/DevelopmentProject/testhandler/thisismyinput" في شريط عنوان المتصفح الخاص بك، ولكن قم بالمعالجة كـ "http://localhost/DevelopmentProject/testhandler/?input=thisismyinput"
يمكنك تنفيذ إعادة كتابة عنوان URL، باستخدام شيء من هذا القبيل URLRewriter.netسيتيح لك ذلك استخدام بناء الجملة الذي ذكرته.
قم بتغيير التكوين الخاص بك من:<add verb = "" path = "testHandler/" type = "handlerlib.testhandler ، handlerlib"/> to:< إضافة فعل = "" مسار = "testhandler/*" نوع = "HandlerLib.testhandler، HandlerLib"/ >
تحقق من قيمة الطلب http://localhost/DevelopmentProject/testhandler/thisismyinput.
إذا لم يتم ذلك، فتأكد من أن IIS 5.1 يقوم بتوجيه كافة الطلبات إلى aspnet_isapi.dll.(على الرغم من أنه يبدو أنه كذلك بالفعل) هذا هو زر "التكوين..." > علامة التبويب "تعيينات التطبيقات" في الدليل الظاهري الخاص بك في IIS.