SharePoint 2013和ASP.NET WebApi

use*_*245 6 asp.net-web-api sharepoint-2013

我想在SharePoint 2013服务器场解决方案中使用ASP.NET WebApi.

我知道它不支持开箱即用,但我发现 SignalR可以通过简单的HttpModule运行,所以我想知道是否可以使用类似的appoach.

提前谢谢,Rich

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());
Run Code Online (Sandbox Code Playgroud)

SPAssemblyResolver

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

WebAPIVirtualPathProvider

与帖子中显示的SignalRVirtualPathProvider相同.

新问题

这种方法的唯一问题是ScriptResource.axdWebResource.axd现在在SP在页面中引用它们时中断.我试图添加一个忽略路线:

RouteTable.Routes.Add(new Route("{resource}.axd", new StopRoutingHandler()));
Run Code Online (Sandbox Code Playgroud)

但我一直得到401 Unauthorized.删除模块会清除错误,所以我猜我们仍然缺少最后一块拼图.

小智 1

是的,同样的方法应该有效。

创建一个 Web api 项目并检查应用程序初始化部分 - 然后按照您已经引用的我的博客文章进行操作。

顺便说一句:在 sharepoint.stackexchange.com 上询问 - 也许有人有更好的解决方案。