Asp.net web api 将服务框架(web api)添加到DNN7模块
我正在尝试将Web API集成到DNN7模块中 控制器和映射器:Asp.net web api 将服务框架(web api)添加到DNN7模块,asp.net-web-api,dotnetnuke,Asp.net Web Api,Dotnetnuke,我正在尝试将Web API集成到DNN7模块中 控制器和映射器: namespace MyControllers { public class ExampleController : DnnApiController { #region "Web Methods" [DnnAuthorize()] [HttpGet()] public HttpResponseMessage H
namespace MyControllers
{
public class ExampleController : DnnApiController
{
#region "Web Methods"
[DnnAuthorize()]
[HttpGet()]
public HttpResponseMessage HelloWorld()
{
try
{
string helloWorld = "Hello World!";
return Request.CreateResponse(HttpStatusCode.OK, helloWorld);
}
catch (System.Exception ex)
{
//Log to DotNetNuke and reply with Error
Exceptions.LogException(ex);
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
}
}
public class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("MyControllers", "default", "{controller}/{action}", new[] { "MyControllers" });
}
}
}
然后我尝试从url访问HelloWorld方法
https://localhost/DesktopModules/MyControllers/API/Example/HelloWorld
并且得到
HTTP错误404.0-找不到
对可能遗漏的内容有何建议 解决了!!!原来DesktopModules文件夹是IIS中的应用程序,这阻止了WebApi。 所以,如果你得到非描述性的 HTTP错误404.0-找不到
首先检查IIS 不确定是否是这样,但如果您尝试在名称/文件夹中没有句点的模块,会怎么样?将相同的代码移动到单独的类库项目中,输出dll将转到网站的主bin,删除所有句点。尝试通过url访问:我在这里迷路了,可能是webconfig中的某个东西?你能用Fiddler解决这个问题吗。这通常是我处理WebAPI问题的方式。它甚至没有找到它,所以我想知道它是否与端口有关(80 vs 443)??发现了问题,DesktopModules文件夹是IIS中的一个应用程序,这显然是对web api的否定。我真的希望我能找出如何阻止vs使用我的DNN模板这样做。这次我没有使用你的模板。开始考虑什么可能会阻止http处理程序,所以删除了所有web.config并逐个添加回来,然后得到了关于IIS中应用程序的好主意。这很有趣,所以不仅仅是我的模板,这让我的头脑稍微放松了一点:DChris,您是否尝试过将模板项目设置改为使用。@DNNDev.co.za您已经有了一个很好的代码示例--谢谢:)