【问题标题】:Could not connect to remote Server when calling Web API from MVC app从 MVC 应用程序调用 Web API 时无法连接到远程服务器
【发布时间】:2016-08-24 20:38:49
【问题描述】:

当我运行它时,我的 Web Api 抛出错误。它说

“/”应用程序中的服务器错误

所以,为了解决这个问题,我在 HelpPageAreaRegistration.cs 的 RegisterArea 方法中将 Help/{action}/{apiId} 更改为 {Controller}/{action}/{apiId}。下面是方法。

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "HelpPage_Default",
        "Help/{action}/{apiId}",
        new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });

    HelpPageConfig.Register(GlobalConfiguration.Configuration);
}

现在,问题已经解决了,但是当我运行我的网络应用程序时,它给了我一个错误,说无法连接到远程服务器。下面是从网络应用程序调用 api 的行。

HttpResponseMessage response = await Http.PostAsJsonAsync("Account/Authenticate", model).ConfigureAwait(false);

在 web api 中,

[Route("Authenticate")]
[HttpPost]
[ValidateModel]
public AuthResponseServiceModel Authenticate(AuthRequestServiceModel sm)
{
    //code
}

完全不确定我在 api 中的修复如何破坏了 web 应用程序和 web api 之间的连接。 如果我遗漏了什么,请告诉我。

【问题讨论】:

  • 假设你启用了属性路由,你的控制器上是否有 [RoutePrefix("Account")]?
  • 可能是一个非常愚蠢的疑问;您是否尝试在“/”前缀 Http.PostAsJsonAsync("/Account/Authenticate", model)
  • 是的..我试过了..但没有运气..
  • 确切的异常消息是“找不到资源”
  • 您可以使用 fiddler 或任何其他工具来检查请求吗?感觉跟路由有关系。您确实在 web api 配置中启用了属性路由,是吗? config.MapHttp.... 东西?

标签: asp.net-mvc asp.net-web-api asp.net-web-api-routing


【解决方案1】:

解决了.. 刚刚在 Routeconfig.cs 中替换了下面的函数

routes.MapRoute( 名称:“默认”, url: "{controller}/{action}/{id}", 默认值:新 { 控制器 =“帮助”,操作 =“索引”,id = UrlParameter.Optional } );

具有以下功能

routes.MapRoute( 名称:“默认”, 网址:“”, 默认值:新{控制器=“帮助”,操作=“索引”} ).DataTokens = new RouteValueDictionary(new { area = "HelpPage" });

并将 RegisterArea 方法的更改恢复为原始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多