我目前正在开发一个项目,该项目需要我们当前的 ASP.NET MVC5 Web 应用程序之一位于客户端将控制的 NGINX 反向代理后面。
我是 NGINX 的新手,所以缺乏知识。
反向代理将放置在子路径中。(下面的例子)
http://localhost:9999/foo/bar/
然后,这将代理到 MVC5 应用程序的根(端口 9998),我已在本地设置了 NGINX 以测试该站点是否按预期工作。我们使用资源的绝对路径(托管在内部 CDN 中),因此所有这些都按预期加载。
我的问题- 反向代理工作正常并显示应用程序的根页面。当点击使用 this.RedirectToAction() 或 @html.ActionLink() 等创建的任何控制器方法/页面链接时,问题开始出现。
MVC 应用程序没有意识到它正在反向代理后面运行,并从其派生 URL 中删除了该子路径。
所以重定向到家庭控制器看起来像
代替 :
http://localhost:9999/foo/bar/home
有人有什么想法可以抵消这个吗?我可以看到 .NET core 有一个解决方法,但看不到 MVC5 的任何内容。我可以使用 this.Redirect() 并指定绝对路径,但应用程序很大,并且在没有反向代理的其他场景中使用。
这个问题可以通过我的 NGINX 配置来解决吗?我在下面包含了我的配置:
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9999;
server_name localhost;
location /foo/bar/ {
rewrite ^/foo/bar/(.*)$ /$1 break;
proxy_pass …Run Code Online (Sandbox Code Playgroud) 希望可以有人帮帮我.我是MVC新手,来自winforms/console/vb6background.
抱歉,如果这已经得到解答,我正在努力了解如何解决以下问题.
我有一个视图模型:
public class testvm
{
public int id { get; set; }
public DateTime date { get; set; }
public student studentID { get; set; }
public testvm() { }
public testvm (student s)
{
studentID = s;
}
}
Run Code Online (Sandbox Code Playgroud)
在传递给视图之前,我预先填充了此ViewModel的student子对象.
学生型号:
public class student
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当模型返回到create HTTP post方法时,student子对象为空.
控制器代码:
// GET: testvms/Create
public ActionResult Create(int sId)
{
student a = db.students.Find(sId); …Run Code Online (Sandbox Code Playgroud) c# model-view-controller asp.net-mvc asp.net-mvc-4 asp.net-mvc-5