संस्करण के लिए समान नाम और विभिन्न नामस्थान वाले नियंत्रक मैं एपीआई संस्करण जोड़ने की कोशिश कर रहा हूं और मेरी योजना अलग-अलग नामस्थान में प्रत्येक संस्करण के लिए नियंत्रक बनाना है। मेरे परियोजना संरचना इस तरह दिखता है (ध्यान दें: प्रत्येक संस्करण के लिए अलग से कोई क्षेत्र)रूटिंग गुणों के साथ संदिग्ध नियंत्रक नाम:
Controllers
|
|---Version0
| |
| |----- ProjectController.cs
| |----- HomeController.cs
|
|---Version1
|
|----- ProjectController.cs
|----- HomeController.cs
मैं मार्गों के लिए RoutingAttribute उपयोग कर रहा हूँ। तो, Version0 में ProjectController मैं 404-NotFound जब मैं सेवा हिट करने के लिए कोशिश कर रहा हूँ मिल
namespace MyProject.Controllers.Version0
{
class ProjectController : BaseController
{
...
[Route(api/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
और version1 में ProjectController रूप
namespace MyProject.Controllers.Version1
{
class ProjectController : BaseController
{
...
[Route(api/v1/users/project/getProjects/{projectId})]
public async GetProjects(string projectId)
{
...
}
}
}
मार्ग के साथ समारोह के रूप में मार्ग के साथ कार्य है लेकिन,।
यदि मैं नियंत्रकों का नाम बदलता हूं तो अद्वितीय नाम (Project1Controller और Project2Controller) रूटिंग कार्य करता है। लेकिन, मैं सादगी के लिए नाम बदलने से बचने की कोशिश कर रहा हूं।
मैंने इस मुद्दे को हल करने के लिए इस लिंक का पालन किया, लेकिन इससे मदद नहीं मिली। मैंने क्षेत्रों को बनाया लेकिन अभी भी कोई सफलता नहीं मिली। Global.aspx फ़ाइल में रूटिंग तर्क जोड़ना मदद नहीं करता है। नामस्थान या तो काम नहीं करता है। http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx/
ऊपर के लिंक क्षेत्रों बनाने के लिए सुझाव देते हैं, लेकिन विशेषता मार्ग प्रति कड़ी के रूप में क्षेत्रों का समर्थन नहीं करते: http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
वहाँ एक और समाधान है? रूटिंग एट्रिब्यूट्स के साथ एक बग?
धन्यवाद!
वी 0 और वी 1 नियंत्रकों के लिए नेमस्पेस क्या है? –
@ पंकज: नामस्थान MyProject.Controllers.Version0 और MyProject.Controllers.Version1 – rkd
दुर्भाग्यवश यह दृष्टिकोण WebApi के साथ काम नहीं करेगा। अधिक जानकारी के लिए [यह] देखें (http://blogs.msdn.com/b/webdev/archive/2013/03/08/using-namespaces-to-version-web-apis.aspx) लिंक –