c# – 无法建立连接,因为目标计算机主动拒绝它127.0.0.1:32450
我试图在MVC中使用3层架构
MVC UI – >服务 – >实体 我正在使用内置的asp.net web开发服务器,我在其中配置了端口4515来运行UI层,我正在进行ajax调用,以便在端口35420配置的服务层中点击webapi服务.当我制作时ajax调用我收到如下状态500的错误
当我查看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的引用引入应用程序逻辑(反之亦然). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |