【问题标题】:MVC5 URL Mismatch works on localhost but not on remote machineMVC5 URL Mismatch 适用于 localhost 但不适用于远程机器
【发布时间】:2017-04-18 05:07:43
【问题描述】:

我在 IIS 上部署了一个 MVC Web 应用程序。当我点击运行(F5)时,它在 VisualStudio 中运行良好。网址看起来像

首页: localhost:8080/

输入数据并单击登录按钮时显示的第二页[只是一个简单的表单] -> localhost:8080/Data/Query/?fname=Markus&lname=Jennings

那是视觉工作室。视图完美呈现并且事情按预期工作的地方。

现在,当我通过手动输入“localhost”从浏览器访问 web 应用程序时,场景是这样的:

主页:

localhost/website

第二页:

localhost/website/Data/Query/?fname=Markus&lname=Jennings

如您所见,网站字/目录始终存在。我的应用程序在里面发布 C:\inetpub\wwwroot\website 所以,我有点明白为什么会有网站这个词了。 Data 是我的控制器,Query 是我的操作方法。

现在是棘手的部分:

当我尝试使用同一台机器但使用不同的 url(即我的 IP 号码)访问我的网站时,会发生以下情况

a.b.c.d/patinput 主页已呈现。 输入数据并点击登录后,显示的 URL 为:

a.b.c.d/Data/Query/?fname=Markus&lname=Jennings

您可能已经猜到了 URL 中不存在“网站”目录。在我看来它应该看起来像

a.b.c.d/website/Data/Query/?fname=Markus&lname=Jennings

如果我手动添加网站路径/单词,第二个页面会根据需要呈现。

第一页是一个简单的登录表单,我将名字和姓氏作为输入并调用 javascript 函数。从 Javascript 函数中,我使用从 HTML 页面检索到的参数调用我的控制器(数据)。

在我正在使用的 javascript 函数中

window.location.href = '/Data/Query/?fname=' + fname + '&lname=' + lname;

我已经尝试添加一个“。”之前 /Data/Query ..... 也不起作用。

谢谢!

【问题讨论】:

  • 我认为这与代码无关。您应该正确配置 IIS,因此不需要在路径中添加“网站”。
  • 我可以看到从外部访问时没有设置虚拟目录。我尝试通过 VS2013(在 localhost 而不是 IIS Express 上)启动 Web 应用程序,它运行良好。但是,当我尝试从我的机​​器或其他机器上的 chrome 访问该网站时,它会失败。重定向只是不起作用!

标签: javascript asp.net-mvc iis ip localhost


【解决方案1】:

我通过解决方法解决了这个问题。看起来像这样。 在我的 javascript 中,我在第一次点击时保存了 window.location.href 值。使用 localStorage 作为

localStorage.setItem("baseUrl", window.location.href);

每当我想导航到其他 Actionresult 时,我只需使用这个 baseUrl 附加它

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多