我想在 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 相同。
新问题
这种方法的唯一问题是ScriptResource.axd和WebResource.axd现在在 SP 在页面中引用它们时会中断。我试图添加一个忽略路线:
RouteTable.Routes.Add(new Route("{resource}.axd", new StopRoutingHandler()));
但我不断收到401 Unauthorized。删除模块可以清除错误,所以我想我们仍然缺少最后一块拼图。