gpt4 book ai didi

javascript - MVC WebAPI 2 与 AngularjS Err_Connection_Refused

转载 作者:搜寻专家 更新时间:2023-11-01 04:25:08 24 4
gpt4 key购买 nike

我是 WebAPI、AngularJS 和 .NET 身份验证的新手,我正在使用本教程 HERE (~不到 10 分钟),我收到关于Failed to load resource: net::ERR_CONNECTION_REFUSED 的错误,通常我只能谷歌一下,但我得到了真的很迷茫,因为这些对我来说都是新技术。

一切顺利,直到我在教程接近尾声时尝试“注册”,这就是出现错误的地方。有人可以仔细检查该教程,看看他们是否可以注册工作,或者快速判断他们使用的东西是否过时或损坏?如前所述,这实际上需要不到 10 分钟的时间。

无论如何,这是我的代码

AngularJSClient 解决方案

enter image description here

app.js

(function () {
'use strict';
// Module name is handy for logging
var id = 'app';
// Create the module and define its dependencies.
var app = angular.module('app', [
]);
app.config(['$httpProvider', function ($httpProvider) {
// Use x-www-form-urlencoded Content-Type
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
// Override $http service's default transformRequest
$httpProvider.defaults.transformRequest = [function (data) {
/**
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
* @return {String}
*/
var param = function (obj) {
var query = '';
var name, value, fullSubName, subName, subValue, innerObj, i;
for (name in obj) {
value = obj[name];
if (value instanceof Array) {
for (i = 0; i < value.length; ++i) {
subValue = value[i];
fullSubName = name + '[' + i + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if (value instanceof Object) {
for (subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if (value !== undefined && value !== null) {
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
}
}
return query.length ? query.substr(0, query.length - 1) : query;
};
return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
}];
}]);
// Execute bootstrapping code and any dependencies.
app.run(['$q', '$rootScope',
function ($q, $rootScope) {
}]);
})();

ma​​inCtrl.js

(function () {
'use strict';
var controllerId = 'mainCtrl';
angular.module('app').controller(controllerId,
['userAccountService', mainCtrl]);
function mainCtrl(userAccountService) {
// Using 'Controller As' syntax, so we assign this to the vm variable (for viewmodel).
var vm = this;
// Bindable properties and functions are placed on vm.
vm.title = 'mainCtrl';
vm.isRegistered = false;
vm.isLoggedIn = false;
vm.userData = {
userName: "",
password: "",
confirmPassword: "",
};
vm.registerUser = registerUser;
vm.loginUser = loginUser;
vm.getValues = getValues;
function registerUser() {
userAccountService.registerUser(vm.userData).then(function (data) {
vm.isRegistered = true;
}, function (error, status) {
vm.isRegistered = false;
console.log(status);
});
}
function loginUser() {
userAccountService.loginUser(vm.userData).then(function (data) {
vm.isLoggedIn = true;
vm.userName = data.userName;
vm.bearerToken = data.access_token;
}, function (error, status) {
vm.isLoggedIn = false;
console.log(status);
});
}
function getValues() {
userAccountService.getValues().then(function (data) {
vm.values = data;
console.log('back... with success');
});
}
}
})();

userAccountService.js

(function () {
'use strict';
var serviceId = 'userAccountService';
angular.module('app').factory(serviceId, ['$http', '$q', userAccountService]);
function userAccountService($http, $q) {
// Define the functions and properties to reveal.
var service = {
registerUser: registerUser,
loginUser: loginUser,
getValues: getValues,
};
var serverBaseUrl = "http://localhost:60737";

return service;
var accessToken = "";
function registerUser(userData) {
var accountUrl = serverBaseUrl + "/api/Account/Register";
var deferred = $q.defer();
$http({
method: 'POST',
url: accountUrl,
data: userData,
}).success(function (data, status, headers, cfg) {
console.log(data);
deferred.resolve(data);
}).error(function (err, status) {
console.log(err);
deferred.reject(status);
});
return deferred.promise;
}
function loginUser(userData) {
var tokenUrl = serverBaseUrl + "/Token";
if (!userData.grant_type) {
userData.grant_type = "password";
}
var deferred = $q.defer();
$http({
method: 'POST',
url: tokenUrl,
data: userData,
}).success(function (data, status, headers, cfg) {
// save the access_token as this is required for each API call.
accessToken = data.access_token;
// check the log screen to know currently back from the server when a user log in successfully.
console.log(data);
deferred.resolve(data);
}).error(function (err, status) {
console.log(err);
deferred.reject(status);
});
return deferred.promise;
}
function getValues() {
var url = serverBaseUrl + "/api/values/";
var deferred = $q.defer();
$http({
method: 'GET',
url: url,
headers: getHeaders(),
}).success(function (data, status, headers, cfg) {
console.log(data);
deferred.resolve(data);
}).error(function (err, status) {
console.log(err);
deferred.reject(status);
});
return deferred.promise;
}
// we have to include the Bearer token with each call to the Web API controllers.
function getHeaders() {
if (accessToken) {
return { "Authorization": "Bearer " + accessToken };
}
}
}
})();

WebAPI2 解决方案

enter image description here

WebApiConfig.cs*

公共(public)静态类 WebApiConfig{ 公共(public)静态无效寄存器(HttpConfiguration 配置) { //Web API 配置和服务 //配置 Web API 以仅使用不记名 token 身份验证。 配置.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

    //Enable CORS for all origins, all headers, and all methods,
// You can customize this to match your requirements
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}

我再次遇到的错误是在教程中第一次测试 Register 函数时。我得到 Failed to load resource: net::ERR_CONNECTION_REFUSED

最佳答案

  1. 使用这个包“Install-Package Microsoft.AspNet.WebApi.Cors
  2. config.EnableCors() 添加到 WebApiConfig

    public static void Register(HttpConfiguration config)
    {
    //Cors code
    config.EnableCors();

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
    );
    }
  3. 最后将其添加到 ConfigureAuth OAuthAuthorizationServerOptionsAllowInsecureHttp = true

关于javascript - MVC WebAPI 2 与 AngularjS Err_Connection_Refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com