我正在尝试将ASP.NET MVC 3应用程序部署到Windows 2008 x64服务器(显然运行IIS 7.0),并且IIS似乎不希望正确地提供内容.所有请求都导致404.0错误,因为请求与任何处理程序都不匹配,并且IIS正在尝试使用StaticFile处理程序来提供请求.这个问题似乎与.NET 4.0有关,因为我有一个MVC 2应用程序在为.NET 2.0运行时配置的应用程序池中运行得很好.
在Windows 7和Windows Server 2008 R2上将此相同的应用程序部署到IIS 7.5服务器时,我没有遇到任何问题.
在部署之前,2008服务器没有安装.NET 4.0或ASP.NET MVC 3,因此以下是我在部署应用程序之前执行的步骤:
对应用程序中的静态资源(JavaScript文件,图像等)的请求顺利通过,但对MVC操作的任何请求都会因404.0错误而失败.我注意到IIS正在使用StaticFile处理程序来处理这些请求,这显然是不正确的.据我所知,ASP.NET 4.0处理程序(即ExtensionlessUrl-ISAPI-4.0*处理程序)已正确定义,因此我不知道为什么/如何处理这些处理程序不会处理请求并且将落在所有处理程序中一直到StaticFile处理程序.
我还遇到了以下MS知识库文章,其中提到您应确保在遇到404错误的服务器上启用/安装HTTP重定向和静态内容压缩.我检查了,我的服务器已经启用了这两个功能.我甚至尝试删除并重新安装功能无济于事.
在这一点上,我完全没有想到为什么这不能正常工作.我能够在2个不同的IIS 7.0服务器上复制该问题.我错过了什么?
iis-7 .net-4.0 windows-server-2008 asp.net-4.0 asp.net-mvc-3
我有这个jquery post调用,它以某种方式调用错误函数,即使它将数据完全输入到数据库中.
<script type="text/javascript">
$(document).ready(function () {
$("#ExtMailCreate").click(function () {
var url = '@Url.Action("Create")';
var data = JSON.stringify(SaveExternalMail());
$.ajax({
type: "POST",
url: url,
data: data,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#result").append("pass");
},
error: function (data) {
$("#result").append("error");
}
});
});
});
function SaveExternalMail() {
var costcentrecode = $("#CostCentreCode").val();
var day = $("#ExtMailDatePicker").val();
var externalMailItemID = $("#ExternalMailItemID").val();
var externalMailLocationID = $("#ExternalMailLocationID").val();
var quantity = $("#Quantity").val();
return {
CostCentreCode: costcentrecode,
Day: day,
ExternalMailItemID: externalMailItemID,
ExternalMailLocationID: externalMailLocationID,
Quantity: quantity …Run Code Online (Sandbox Code Playgroud)