SharePoint 2013 ファーム ソリューション内で ASP.NET WebApi を使用したいと考えています。
そのままではサポートされていないことはわかっていますが、 SignalR は単純な HttpModule を使用して実行できることがわかったので、同様のアプローチを使用できるかどうか疑問に思っていました。
前もってありがとう、リッチ
2013 年 6 月の更新
上記の投稿に示されているHTTPモジュールを作り直すことで機能させました:
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
投稿に示されている SignalRVirtualPathProvider と同じです。
新しい問題
このアプローチの唯一の問題は、SP がページ内でそれらを参照すると、ScriptResource.axdとWebResource.axdが壊れるようになったことです。無視ルートを追加しようとしました:
RouteTable.Routes.Add(new Route("{resource}.axd", new StopRoutingHandler()));
しかし、私は401 Unauthorizedを取得し続けます。モジュールを削除するとエラーが解消されるので、まだパズルの最後のピースが 1 つ欠けていると思います。