2013-05-08 19 views
6

Chciałbym użyć ASP.NET WebApi wewnątrz rozwiązania farmy SharePoint 2013.SharePoint 2013 i ASP.NET WebApi

Wiem, że nie jest to obsługiwane od razu po zainstalowaniu, ale znalazłem SignalR can be run by means of a simple HttpModule, więc zastanawiałem się, czy można zastosować podobną aplikację.

Dzięki z góry, Bogate

UPDATE czerwca 2013

Wykonany on pracuje przez przerabianiu moduł HTTP przedstawionego we wspomnianym stanowisku:

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

samo jak SignalRVirtualPathProvider pokazanego na stanowisku.

nowej emisji

Jedyny problem z tym podejściem jest ScriptResource.axd i WebResource.axd teraz przerwać, gdy SP odwołuje je na stronie. Próbowałem dodać trasę ignorowania:

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

ale wciąż otrzymuję 401 Nieuprawnione. Usunięcie modułu usuwa błąd, więc domyślam się, że wciąż brakuje nam ostatniego fragmentu układanki.

+0

Zakładam, że musisz zmienić Dostawcę ścieżki wirtualnej, zobacz przykład tutaj: https://spsignalr.codeplex.com/SourceControl/latest#MaxMelcher.SPSignalR/SignalRVirtualPathProvider.cs –

+1

Dobra, implementacja VPP zasugerowała wszystkie pułapki brakujące sprawy i wszystko działa teraz. Poprzednio _DirectoryExists_ dawał różnego rodzaju błędy, gdy brakowało _virtualDir.Contains ("my/api/path") _, począwszy od błędów JS SharePoint, uszkodzonego wyszukiwania, itp. – user2363245

+0

Próbuję zrobić to samo, a ja " m prawie tam, ale dostaję błąd, ponieważ nie może znaleźć kontrolera. Wdrażanie tylko projektu webapi działa dobrze, ale wewnątrz SP się psuje. Czy masz jakieś propozycje? –

Odpowiedz

1

Tak, to samo podejście powinno działać.

Utwórz projekt aplikacji internetowej i sprawdź część init aplikacji - a następnie śledź mój wpis na blogu, do którego już się odwołałeś.

Btw: Zapytaj na sharepoint.stackexchange.com - może ktoś ma lepsze rozwiązanie.

+0

W końcu dostałem czas, żeby spróbować, i faktycznie zobaczyłem jakieś wyniki. Module OFF -> 404 Not Found; Moduł WŁ. -> 401 Nieautoryzowany. Nadal zastanawiam się, dlaczego, ale wygląda na to, że musimy skonfigurować zabezpieczenia SharePoint za pomocą WebApi – user2363245

+0

Wątpliwości, sprawdź w dzienniku iis dokładny kod błędu, np. 401.1 –

+1

Dobrze, ale działa :-) Zamierzę wyjaśnienie JAK NAJSZYBCIEJ. Dzięki BTW! – user2363245

Powiązane problemy