2013-05-08 30 views
6

Tôi muốn sử dụng ASP.NET WebApi bên trong giải pháp cụm máy chủ SharePoint 2013.SharePoint 2013 và ASP.NET WebApi

Tôi biết nó không được hỗ trợ out-of-the-box, nhưng tôi tìm thấy SignalR can be run by means of a simple HttpModule, vì vậy tôi đã tự hỏi liệu một appoach tương tự có thể được sử dụng.

Cảm ơn trước, Giàu

CẬP NHẬT tháng 6 năm 2013

Made nó làm việc bằng cách làm lại Module HTTP hiển thị trong bài đề cập:

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "kms2013/api/{controller}/{action}", 
       defaults: new { } 
      ); 
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 
config.Services.Replace(typeof(IAssembliesResolver), new SPAssemblyResolver()); 

HostingEnvironment.RegisterVirtualPathProvider(new WebAPIVirtualPathProvider()); 

SPAssemblyResolver

public class SPAssemblyResolver : IAssembliesResolver 
{ 
    public ICollection<Assembly> GetAssemblies() 
    { 
     return new List<Assembly> { Assembly.GetExecutingAssembly() }; 
    } 
} 

WebAPIVirtualPathProvider

Tương tự như SignalRVirtualPathProvider hiển thị trong bài.

NEW ISSUE

Vấn đề duy nhất với phương pháp này là ScriptResource.axdWebResource.axd nay phá vỡ khi SP tham chiếu chúng trong một trang. Tôi đã cố thêm một tuyến đường bỏ qua:

RouteTable.Routes.Add(new Route("{resource}.axd", new StopRoutingHandler())); 

Nhưng tôi tiếp tục nhận được 401 Không được phép. Loại bỏ các mô-đun xóa lỗi, vì vậy tôi đoán chúng tôi vẫn còn thiếu một mảnh cuối cùng của câu đố.

+0

Tôi giả sử bạn phải điều chỉnh các nhà cung cấp đường dẫn ảo, xem một ví dụ ở đây: https://spsignalr.codeplex.com/SourceControl/latest#MaxMelcher.SPSignalR/SignalRVirtualPathProvider.cs –

+1

Fine, việc thực hiện VPP bạn đề nghị bẫy tất cả các trường hợp còn thiếu và mọi thứ đang hoạt động. Trước đây, _DirectoryExists_ mang lại nhiều loại lỗi khác nhau khi thiếu _virtualDir.Contains ("my/api/path") _, từ lỗi SharePoint JS, tìm kiếm bị hỏng, v.v. – user2363245

+0

Tôi đang cố gắng thực hiện tương tự và tôi ' m gần như ở đó, nhưng tôi gặp lỗi vì nó không thể tìm thấy Bộ điều khiển. Triển khai chỉ dự án webapi nó hoạt động tốt, nhưng bên trong SP nó phá vỡ. Bạn có gợi ý nào không? –

Trả lời

1

Có, cách tiếp cận tương tự sẽ hoạt động.

Tạo dự án api trên web và kiểm tra phần ứng dụng init - sau đó theo dõi bài đăng trên blog của tôi mà bạn đã tham chiếu.

Btw: Hỏi tại sharepoint.stackexchange.com - có thể ai đó có giải pháp tốt hơn.

+0

Cuối cùng cũng có thời gian để thử, và thực sự đã thấy một số kết quả. Mô-đun OFF -> 404 Không tìm thấy; Module ON -> 401 Không được phép. Vẫn phải tự hỏi tại sao, nhưng có vẻ như chúng tôi cần thiết lập bảo mật SharePoint với WebApi – user2363245

+0

Nghi ngờ, hãy kiểm tra nhật ký iis để biết mã lỗi chính xác, ví dụ: 401.1 –

+1

Tốt, đã làm việc :-) Tôi sẽ đăng ASAP giải thích. Cảm ơn BTW! – user2363245

Các vấn đề liên quan