DotNetNuke7:-Web Api 未在呼叫时触发
DotNetNuke7:-Web Api is not triggering on call
我在 DotNetNuke7 中使用 Angular Js 和 TypeScript 实现了一个模块,我在名为 customerNew 的 Web 项目中实现了所有输入表单和 js,然后将 Web APi 添加到另一个名为 CustomerNewController 的项目有我的方法,但是当我从我的 Web 项目点击 URL 到 Api.It 时,processed.I 也没有实现路由映射器但仍然无法获取成功。
我的路由映射器 Class 如下所示:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DotNetNuke.Web.Api;
using System.Web.UI.WebControls;
namespace CustomerNewController
{
class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("CustomerNewController", "default", "{controller}/{action}",
new[] { "CustomerNewController" });
}
}
}
这是我的 WebApi
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI;
using System.Xml.Serialization;
using DotNetNuke.Entities.Users;
using System.Web.Services;
using DotNetNuke.Web.Api;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules.Communications;
using DotNetNuke.Entities.Modules;
namespace CustomerNewController
{
public class CreateController : DnnApiController
{
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage HelloWorld()
{
return Request.CreateResponse(HttpStatusCode.OK, "Hello World!");
}
}}
我的URL
http://localhost/dnn7/DesktopModules/CustomerNewController/Api/Create/HelloWorld
这是我的文件夹结构
我的 WebAPI GET 方法示例:
[DnnExceptionFilter]
public class AuthorController : DnnApiController
{
#region Public RPC Methods
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage GetAllAuthors()
{
var lstAuthors = AuthorRepository.GetAllAuthors();
return Request.CreateResponse(HttpStatusCode.OK, lstAuthors);
}
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage GetAlphabet()
{
var lstAuthors = AuthorRepository.GetAlphabet();
return Request.CreateResponse(HttpStatusCode.OK, lstAuthors);
}
#endregion
}
服务路由映射器示例(只需要做一次):
public class ServiceRouteMapper : IServiceRouteMapper
{
#region IServiceRouteMapper Implementation
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("ATKV.Commerce", "default", "{controller}/{action}", new[] { "ATKV.Commerce.Services" });
}
#endregion
}
调用代码:
// Service Paths
var servicesFramework = opts.servicesFramework;
var servicePath = servicesFramework.getServiceRoot('ATKV.Commerce') + 'Author/';
// Bind data
$.ajax({
type: "GET",
cache: false,
url: servicePath + "GetAllAuthors",
beforeSend: servicesFramework.setModuleHeaders
}).done(function (authors) {
if (typeof authors !== "undefined" && authors != null) {
var viewModel = new MasterViewModel(authors);
ko.applyBindings(viewModel, document.getElementById($(containerElement).attr('id')));
} else {
displayMessage("An error occurred", "dnnFormError");
}
}).fail(function (xhr, status) {
displayMessage(status, "dnnFormError");
return null;
});
我在 DotNetNuke7 中使用 Angular Js 和 TypeScript 实现了一个模块,我在名为 customerNew 的 Web 项目中实现了所有输入表单和 js,然后将 Web APi 添加到另一个名为 CustomerNewController 的项目有我的方法,但是当我从我的 Web 项目点击 URL 到 Api.It 时,processed.I 也没有实现路由映射器但仍然无法获取成功。
我的路由映射器 Class 如下所示:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DotNetNuke.Web.Api;
using System.Web.UI.WebControls;
namespace CustomerNewController
{
class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("CustomerNewController", "default", "{controller}/{action}",
new[] { "CustomerNewController" });
}
}
}
这是我的 WebApi
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI;
using System.Xml.Serialization;
using DotNetNuke.Entities.Users;
using System.Web.Services;
using DotNetNuke.Web.Api;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules.Communications;
using DotNetNuke.Entities.Modules;
namespace CustomerNewController
{
public class CreateController : DnnApiController
{
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage HelloWorld()
{
return Request.CreateResponse(HttpStatusCode.OK, "Hello World!");
}
}}
我的URL
http://localhost/dnn7/DesktopModules/CustomerNewController/Api/Create/HelloWorld
这是我的文件夹结构
我的 WebAPI GET 方法示例:
[DnnExceptionFilter]
public class AuthorController : DnnApiController
{
#region Public RPC Methods
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage GetAllAuthors()
{
var lstAuthors = AuthorRepository.GetAllAuthors();
return Request.CreateResponse(HttpStatusCode.OK, lstAuthors);
}
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage GetAlphabet()
{
var lstAuthors = AuthorRepository.GetAlphabet();
return Request.CreateResponse(HttpStatusCode.OK, lstAuthors);
}
#endregion
}
服务路由映射器示例(只需要做一次):
public class ServiceRouteMapper : IServiceRouteMapper
{
#region IServiceRouteMapper Implementation
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("ATKV.Commerce", "default", "{controller}/{action}", new[] { "ATKV.Commerce.Services" });
}
#endregion
}
调用代码:
// Service Paths
var servicesFramework = opts.servicesFramework;
var servicePath = servicesFramework.getServiceRoot('ATKV.Commerce') + 'Author/';
// Bind data
$.ajax({
type: "GET",
cache: false,
url: servicePath + "GetAllAuthors",
beforeSend: servicesFramework.setModuleHeaders
}).done(function (authors) {
if (typeof authors !== "undefined" && authors != null) {
var viewModel = new MasterViewModel(authors);
ko.applyBindings(viewModel, document.getElementById($(containerElement).attr('id')));
} else {
displayMessage("An error occurred", "dnnFormError");
}
}).fail(function (xhr, status) {
displayMessage(status, "dnnFormError");
return null;
});