C# MVC3部署到目录,url问题

C# MVC3部署到目录,url问题,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 3,我有一个mvc3 web应用程序,它将被发布到网站的目录中。应用程序的地址看起来像。aopo是目录的名称。部署之后,我发现js文件中的url不再有效。因为我用硬代码url编写了js代码,就像 $.ajax({url:"/employee/getemployee"}) 在这种情况下,请求将被发送到而不是,并返回404。 js中有很多这样的代码。我不想修改js。有什么简单的方法可以让它工作吗?我可以在global.asax.cs中重写请求吗?不,这是不可能的。由于请求没有到达您的应用程序中,您无法

我有一个mvc3 web应用程序,它将被发布到网站的目录中。应用程序的地址看起来像。aopo是目录的名称。部署之后,我发现js文件中的url不再有效。因为我用硬代码url编写了js代码,就像

$.ajax({url:"/employee/getemployee"})
在这种情况下,请求将被发送到而不是,并返回404。
js中有很多这样的代码。我不想修改js。有什么简单的方法可以让它工作吗?我可以在global.asax.cs中重写请求吗?

不,这是不可能的。由于请求没有到达您的应用程序中,您无法访问它,因此无法重写它


如果您可以控制根站点,则可以使用IIS重写模块将URL重写到您的网站。

不,这是不可能的。由于请求没有到达您的应用程序中,您无法访问它,因此无法重写它


如果您可以控制根站点,则可以使用IIS重写模块将URL重写到您的网站。

我相信您需要将URL引用更改为:

$.ajax({url:"@Url.Action("getemplotee","employee")"})
如果这是一个脚本文件,您可以将正确的URL写入页面上的一个元素并读取:

<div id='Main' data-url='@Url.Action("getemplotee","employee")' />
Rgarding:

There is lots of code in js like that. I don't want to modify the js

我理解,但您需要使用适当的帮助器方法来说明在虚拟目录下运行的原因,因此我建议您咬紧牙关,以正确的方式进行修复。

我相信您需要将url引用更改为:

$.ajax({url:"@Url.Action("getemplotee","employee")"})
如果这是一个脚本文件,您可以将正确的URL写入页面上的一个元素并读取:

<div id='Main' data-url='@Url.Action("getemplotee","employee")' />
Rgarding:

There is lots of code in js like that. I don't want to modify the js

我理解,但您需要使用适当的助手方法来说明在虚拟目录下运行的原因,因此我建议您咬紧牙关,以正确的方式进行修复。

一个不太干净的解决方案可能是

在布局中设置url前缀(在公共位置),如

注意:如果在全局选项设置为false的情况下调用$.ajax()或$.ajaxSetup(),则不会触发.ajaxSend()方法

这不是一个理想的解决方案,但在紧急情况下可能会有所帮助


希望这有帮助。

一个不太干净的解决方案可能是

在布局中设置url前缀(在公共位置),如

注意:如果在全局选项设置为false的情况下调用$.ajax()或$.ajaxSetup(),则不会触发.ajaxSend()方法

这不是一个理想的解决方案,但在紧急情况下可能会有所帮助


希望这有帮助。

是的,我同意。这应该是一个正常的解决方案。是的,我同意。这应该是一个正常的解决方案。不客气,当您开始将所有
$.ajax({url:“/employee/getemployee”})
更改为
$.ajax({url:window.url\u PREFIX+“/employee/getemployee”})时,此解决方案将使应用程序处于工作状态,当js文件中的所有url都被更改时,您可以放弃
ajaxSend
钩子。欢迎您,当您开始将所有
$.ajax({url://employee/getemployee})更改为
$.ajax({url:window.url\u PREFIX+“/employee/getemployee})时,此解决方案将使应用程序处于工作状态。
,当js文件中的所有url都被更改时,您可以放弃
ajaxSend
钩子。然后您必须按照@asawyer所述调整所有调用,或者由shakib实施修复。我建议使用Url.Action方法清理您的解决方案。从长远来看,这将是最好的解决方案。然后,您必须按照@asawyer所述调整所有调用,或者由shakib实施修复。我建议使用Url.Action方法清理您的解决方案。从长远来看,这将是最好的解决办法。