我在不同的计算机上托管了两个应用程序:
我的路由器(my.server.com)配置为转发以下请求:
我使用Microsoft.OData.Client库生成OData上下文并从MVC控制器中使用它。所有CRUD操作都运行良好,除非我尝试更新从此上下文中检索的实体。
var entity = await context.Entities.ByKey(id).GetValueAsync();
if (entity != null)
{
entity.Property = newValue;
context.UpdateObject(entity);
await context.SaveChangesAsync();
}
在SaveChangesAsync方法上,我收到“无法连接到远程服务器”的异常。我首先查看了这个异常并看到了它,它试图访问端口80上的my.server.com而不是10080.当我查看实体变量上下文时,它说:
APP1似乎在说“你好,我的实体可以从[Entities-> Uri]访问”,而Microsoft.OData.Client说“我可以从[BaseUri]访问”但是以下代码正在运行:
public async Task<ActionResult> Edit(Entity entity)
{
context.AttachTo("Entities", entity);
context.UpdateObject(entity);
await context.SaveChangesAsync();
return RedirectToAction("Details", new { id = entity.Id });
}
答案 0 :(得分:0)
您正在向包含:10080
端口的标头发送包含:80
端口托管的应用的网址请求。使用NAT,端口修改(PAT),但不纠正URL上的端口可能是您的问题的根源。换句话说,你要求路由器与史密斯先生交谈,然后路由器将请求发送给约翰逊先生。问题是约翰逊先生认为请求是针对史密斯先生的,所以他不喜欢它。
您应该在LAN LAN计算机的同一端口中托管服务,或者在防火墙中打开相同的端口并执行基本NAT(无端口映射),以避免接收请求的服务器端口与URL端口之间发生冲突你的要求。