3
function girisAjaxKontrol() {
var kullanici = { 'kullaniciAdi': $('#username').val(), 'hidden': $('#password').val() };
$.ajax({
    url: '/Giris/GirisGecerliMi',
    type: 'POST',
    data: kullanici,
    success: girisAjaxReturn,
    error: function (error, textstatus) {
        JSON.stringify(error);
        errorMessage($("div.girisSubmit input"), JSON.stringify(error), false);            
    }
});

}

这个函数得到下面的错误(它在部署之前工作)。该网站是本地 IIS 7.5 上的 Asp .Net MVC4 网站;我搜索了很多,但仍然无法解决。

Server Error in Application \"DEFAULT WEB SITE\"

HTTP Error 404.0 - Not Found

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Module: IIS Web Core
Notification: MapRequestHandler
Handler: StaticFile
Error Code: 0x80070002

Requested URL   http://localhost:80/Giris/GirisGecerliMi
Physical Path   C:\\inetpub\\wwwroot\\Giris\\GirisGecerliMi
Logon Method    Anonymous
Logon User  Anonymous   
4

1 回答 1

5
url: '/Giris/GirisGecerliMi',

不应该像这样硬编码。你应该使用 url helpers 来生成这个 url。原因是当您在 IIS 中部署应用程序时,您应该考虑一个虚拟目录名称,因此正确的 url 是:

url: '/MyAppName/Giris/GirisGecerliMi',

但是通过像您一样对 url 进行硬编码,这是无法正常工作的。在 ASP.NET MVC 中,您应该始终使用 url 帮助程序,例如Url.Action生成给定控制器操作的 url,因为这些帮助程序不仅考虑您的路由定义,还考虑虚拟目录名称等内容。

所以正确的方法是让这个 url 在服务器端生成并作为参数传递给girisAjaxKontrol函数:

function girisAjaxKontrol(url) {
    var kullanici = { 'kullaniciAdi': $('#username').val(), 'hidden': $('#password').val() };
    $.ajax({
        url: url,
        type: 'POST',
        data: kullanici,
        success: girisAjaxReturn,
        error: function (error, textstatus) {
            JSON.stringify(error);
            errorMessage($("div.girisSubmit input"), JSON.stringify(error), false);            
        }
    });
}
于 2012-06-20T13:51:05.500 回答