باستخدام خط مائل عكسي (٪ 5c) في REST WCF URL

أقوم ببناء خدمة REST على WCF ، وأحد الطرق التي أكتبها هي GetProfile ، والتي ستعيد الملف الشخصي لاسم مستخدم معين. سيشتمل اسم المستخدم على نطاق المستخدم ، وسيكون لديه التنسيق التالي: "DOMAIN \ username".

لذلك ، لدي خدمة باسم Profiles.svc ، والتي تتضمن إعداد نقطة النهاية التالية:

[OperationContract]
[WebGet(UriTemplate = "/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String username);

ومع ذلك، عندما أحاول أن يزور الخدمة في HTTP: //server/profiles.svc/DOMAIN٪5cusername (٪ 5c هو نموذج urlencoded للشرطة المائلة للخلف) أحصل على الخطأ التالي:

Server error in '/' Application
HTTP Error 400 - Bad Request

يحدث هذا حتى عندما يكون هناك رمز تعريف بالفعل في تنفيذ GetProfile ، لذلك أعتقد أن يتم طرح الخطأ عند النقطة WCF يحاول ربط URI إلى أسلوب.

هل هناك بعض الإعدادات التي أحتاج إلى إضافتها إلى تهيئة خدمة الويب الخاصة بي من أجل السماح بإضافة خطوط مائلة عكسية إلى عناوين URL في خدمة REST WCF؟ أو هي خطوط مائلة عكسية ببساطة غير مسموح به؟

1

1 إجابة

وأظن أنه لا يُسمح لهم في هذا الجزء من عنوان URL ببساطة. إنها جيدة في سلسلة الاستعلام طالما تم ترميزها. كقاعدة عامة ، لن أضع أي شيء في جزء عنوان URL غير صالح في اسم الملف (أي؟).

ربما يمكنك استخدام حرف مختلف لتعيين النطاق من اسم المستخدم.

يمكنك أيضًا فصل اسم المستخدم إلى اسم النطاق واسم المستخدم واستخدام مسار المسار العادي "/". لست فاميلار مع هذا يكفي لمعرفة ما إذا كان هذا هو كيف يمكنك القيام بذلك بالتأكيد ، ولكن هذا سيكون أفضل تخميني.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
5
وأضاف
حل لطيف. اضطررنا إلى حذف/من REST url أيضًا.
وأضاف المؤلف Muhammedh, مصدر
يبدو أن هذه هي الطريقة الصحيحة للقيام بذلك (/ {domainName}/{userName}) كمجال واسم له علاقة هرمية يتم التعبير عنها بشكل جيد مع REST.
وأضاف المؤلف James Bender, مصدر