gpt4 book ai didi

c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :32450

转载 作者:行者123 更新时间:2023-11-30 12:56:20 26 4
gpt4 key购买 nike

我正在尝试在 MVC 中使用 3 层架构MVC UI-->服务-->实体

我正在为此使用内置的 asp.net web 开发服务器,我在其中配置了端口 4515 以运行 UI 层,并且我正在调用 ajax 以命中在端口 35420 配置的服务层中的 webapi 服务。当我进行 ajax 调用时,出现如下错误,状态为 500

System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:32450.

当我查看 IIS express 时,只有 4515 正在运行,而 35420 服务层未运行。

如何摆脱这个问题?当我的 UI 层运行时,我希望我的服务层自动并行运行吗?有什么办法可以为此完成更好的解决方案吗?

而且我无法使用 visual studio 2013 开发服务器内置的 IIS Express 为上述两个项目配置相同的端口号?

是否可以在 visual studio 2013 内置开发服务器的 IIS Express 中为上述两个项目配置相同的端口号?

Js函数:

function AddProduct() {

var productmodel = {
ProductName: $('#ProductName').val(),
CreationDate: $('#CreationDate').val(),
ProuductSerialNumber: $('#ProuductSerialNumber').val(),
Descripiton: $('#Descripiton').val(),
CreatedBy: $('#CreatedBy').val(),
Price: $('#Price').val()
};
var form = $("#productFrm");
if (form.valid()) {
$.ajax({
url: 'Product/AddProduct',
type: 'POST',
data: JSON.stringify(productmodel),
contentType: "application/json;charset=utf-8",
beforeSend : function(xhr, opts){
//show loading gif
$(".overlay").show();
$(".loading-img").show();
},
success: function (data) {
if (data.StatusCode === 204) {
alert('Product Created Succesfully');
}

else
{
alert('Something is wrong and server returned :' + data.StatusCode + ' and the reason is ' + data.ReasonPhrase);
}
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
},
complete : function() {
//remove loading gif
$(".overlay").hide();
$(".loading-img").hide();
}
});
}
}


GloboMart.Application.Web.UI project Configured in IIS Port 4515:

public class ProductController : Controller
{

private HttpClient _client;
private HttpResponseMessage _response;
public ProductController()
{
_client = new HttpClient();
_client.BaseAddress = new Uri("http://localhost:32450/");
}
// GET: Product
public ActionResult Index()
{
return View();
}

[HttpPost]
public async Task<JsonResult> AddProduct(ProductViewModel ProductViewModel)
{
using (var client = _client)
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
StringContent content = new StringContent(JsonConvert.SerializeObject(ProductViewModel), Encoding.UTF8, "application/json");
_response = await client.PostAsync("api/Products/CreateProduct", content);
}
return Json(_response);
}

GloboMart.Services.WebApi project Confiugured in port http://localhost:32450/


using GloboMart.Domain.Entities.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using GloboMart.Application.Web.UI.Models;
using GloboMart.Domain.Entities.Entities;

namespace GloboMart.Services.WebApi.Controllers
{
public class ProductsController : ApiController
{
private IProductRepository _repository;

public ProductsController(IProductRepository Repository)
{
_repository = Repository;
}

// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

// GET api/values/5
[HttpGet]
public List<Product> GetAllProducts()
{
var products= _repository.GetAll();

return products.ToList();

}

// POST api/values

[HttpPost]
public void CreateProduct([FromBody] ProductViewModel ProductViewModel)
{
var Product=ConvertProductModelToProduct(ProductViewModel);
_repository.Add(Product);
}

// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}

// DELETE api/values/5
public void Delete(int id)
{
}

private Product ConvertProductModelToProduct(ProductViewModel ProductViewModel)
{
`enter code here` var Product = new Product()
{
Name=ProductViewModel.ProductName,
SerialNumber=ProductViewModel.ProuductSerialNumber,
Description=ProductViewModel.Descripiton,
CreatedBy=ProductViewModel.CreatedBy,
CreationDate=Convert.ToDateTime(ProductViewModel.CreationDate),
Price=ProductViewModel.Price
};
return Product;
}
}
}

最佳答案

3 层架构并不意味着您必须拥有 3 个单独托管的层。

您可以将所有层放在 Visual Studio 中的一个解决方案中。这样,当您运行站点时,您可以将其作为一个托管解决方案同时运行。通常这是通过一个 Web/MVC 项目、一个应用程序逻辑项目和一个数据访问项目(您称之为实体)来完成的。您应该能够在应用程序逻辑项目的 Web/MVC 项目中引入引用。然后,您可以将数据访问的引用引入应用程序逻辑(反之亦然)。

关于c# - 无法建立连接,因为目标机器主动拒绝 127.0.0.1 :32450,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788217/

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