我想使用3層架構MVC MVC UI - >服務 - >實體無連接可以作出,因爲目標機器積極地拒絕它127.0.0.1:32450
我使用內置的asp.net web開發服務器,在這裏我配置了4515端口來運行UI層,並且我正在ajax調用,以在端口35420配置的服務層中打一個webapi服務。當我做一個ajax調用時,我是得到如下狀態500的錯誤
System.Net.Sockets.SocketException:由於目標機器主動拒絕它而無法建立連接127.0.0.1:32 450。
當我查看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;
}
}
}
你有多個項目,所有的都在調試時開始:http://stackoverflow.com/questions/3697092/starting-多項目時調試在視覺工作室2010? – rene
我假設端口號(35420和32450)中的不一致是錯別字,而不是您嘗試連接到錯誤端口的事實? – Chris