سؤال

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

.

وأنا بالتالي لديها خدمة تسمى 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؟ أو مائلة عكسية ببساطة لا يسمح؟

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

المحلول

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

وربما يمكنك استخدام حرف مختلفة لdeliminate المجال من اسم المستخدم والعشرين.

ويمكن أيضا فصل اسم المستخدم في DOMAINNAME واسم المستخدم واستخدام deliminator مسار طبيعي '/'. أنا لست فاميلار مع هذا يكفي لمعرفة ما إذا كان هذا هو كيف نفعل ذلك بالتأكيد، ولكن هذا سيكون أفضل تخمين بلدي.

[OperationContract]
[WebGet(UriTemplate = "/{domainName}/{username}", ResponseFormat = WebMessageFormat.Xml)]
IRestResponse GetProfile(String domainName, String username);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top