加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法建立连接,因为目标计算机主动拒绝它127.0.0.1:32450

发布时间:2020-12-15 21:04:56 所属栏目:百科 来源:网络整理
导读:我试图在MVC中使用3层架构 MVC UI – 服务 – 实体 我正在使用内置的asp.net web开发服务器,我在其中配置了端口4515来运行UI层,我正在进行ajax调用,以便在端口35420配置的服务层中点击webapi服务.当我制作时ajax调用我收到如下状态500的错误 System.Net.Sock
我试图在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内置开发服务器,我无法为上述两个项目配置相同的端口号?

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

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项目,一个Application Logic项目和一个Dataaccess项目(您称之为实体)来完成的.您应该能够在Application Logic项目的Web / MVC项目中引入一个引用.然后,您可以将Dataaccess的引用引入应用程序逻辑(反之亦然).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读