2015-02-04 17 views
12

Tôi có dự án ASP.NET Web API và tôi muốn thêm một trang Trợ giúp, nhưng tôi muốn nó nằm trong một dự án riêng biệt.Trang trợ giúp ASP.NET Web API trong dự án riêng biệt

Có thể không?

+0

Tất nhiên bạn có thể, trang trợ giúp làm việc trên tài liệu XML mà bạn cung cấp đường dẫn. Nhưng một dự án thường là một ứng dụng web. Bạn có muốn trang trợ giúp trên một cổng khác trong khi phát triển và trong một ứng dụng khác trên IIS không? Bạn có thể giải thích thêm một chút về mục tiêu chính xác của mình không? – CodeCaster

+0

Tôi không muốn làm hỏng dự án Web API của mình với tất cả các tài nguyên cần thiết cho trang Trợ giúp, đó là lý do chính tôi muốn mã của tôi cho trang Trợ giúp nằm trong một dự án riêng biệt. – koryakinp

+0

Trang trợ giúp được tạo trong khu vực riêng của nó. Nếu bạn gắn bó với khu vực và đặt các nguồn lực vào khu vực đó, dự án của bạn sẽ không bị rối tung lên. –

Trả lời

0

Bạn có thể viết lại XmlDocumentationProvider constructor để một cái gì đó như thế:

public XmlDocumentationProvider(string appDataPath) 
{ 
    if (appDataPath == null) 
    { 
     throw new ArgumentNullException(nameof(appDataPath)); 
    } 

    var files = new[] { "MyWebApiProject.xml" /*, ... any other projects */ }; 
    foreach (var file in files) 
    { 
     var xpath = new XPathDocument(Path.Combine(appDataPath, file)); 
     _documentNavigators.Add(xpath.CreateNavigator()); 
    } 
} 

Nó sẽ bao gồm tất cả các tập tin tài liệu xml mà bạn liệt kê trong mảng. Bạn cũng nên đảm bảo dự án Web API mục tiêu của bạn (và tất cả các dự án mô hình nếu cần) tạo ra tài liệu về xây dựng và sao chép nó vào đúng vị trí. enter image description here

1

Bạn nên gọi WebApiConfig.Register từ dự án API web của bạn trong dự án giúp đỡ của bạn:

protected void Application_Start() 
    { 
    AreaRegistration.RegisterAllAreas(); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    GlobalConfiguration.Configure(MyApiProjectNamespace.WebApiConfig.Register); 
    } 
Các vấn đề liên quan