6

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.axdWebResource.axdが壊れるようになったことです。無視ルートを追加しようとしました:

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

しかし、私は401 Unauthorizedを取得し続けます。モジュールを削除するとエラーが解消されるので、まだパズルの最後のピースが 1 つ欠けていると思います。

4

1 に答える 1