在 IIS 8.5 中对 asp.net mvc 5 执行 post 操作时出现错误 404
Error 404 in working with post actions on asp.net mvc 5 in IIS 8.5
我对具有 POST 属性的操作有疑问。
当我使用 IIS Express Server 时,一切正常,但是当我使用本地 IIS 时,GET 操作工作正常,当我的 Web 应用程序中调用 post 操作时,出现以下错误:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
例如 CallController 中的此操作:
[HttpPost]
public PartialViewResult Connecting(FarakhanModels fara)
{
try
{
fara.IP = fara.IP.Trim();
IPAddress IP = IPAddress.Parse(fara.IP);
socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
socket.Connect(IP, fara.Port);
fara.IsConnected = true;
}
catch (Exception ex)
{
fara.ErrorMessage = ex.Message;
fara.IsConnected = false;
}
return (PartialView(viewName: "_Partial_Connect", model: fara));
}
对此观点:
<h4>Call group</h4>
<hr />
<div id="connect">
<div id="loading">
<img src="~/Images/ajax-loader.gif" title="loading" />
Loading... Please Wati !
</div>
<br />
<div class="col-md-9 col-sm-9">
<span class="col-md-3">Connect to server:</span>
<input type="search" id="ip" />
</div>
<br />
<br />
<div class="col-md-9 col-sm-10">
<span class="col-md-3 col-sm-3">Port:</span>
<input type="search" id="port" />
</div>
<br />
<br />
<br />
<div class="col-md-2 col-md-offset-3">
<button type="button" class="btn-primary" id="btnConnect">Connect</button>
@*<input type="button" id="btnConnect" name="btnConnect" value="Connect" style="width:120px" />*@
</div>
<div class="col-md-12" id="message">
</div>
<br />
<br />
@section Scripts {
<script>
$(document).ready(function () {
$("div#loading").hide();
$("div#call").hide();
$("button#btnConnect").click(function () {
$("div#message").html("");
$("div#loading").show();
$("button#btnConnect").hide();
var varIp = $("input#ip").val();
var varPort = $("input#port").val();
var varData =
{
ip: varIp,
port: varPort,
};
$.ajax({
type: "POST",
dataType: "html",
data: varData,
url: "/Call/Connecting",
error: function (response) {
$("div#message").html(response.error.toString());
},
success: function (response) {
$("input#ip").val("");
$("input#port").val("");
$("div#call").show();
$("div#connect").hide();
$("div#partialView").html(response);
},
complete: function (response) {
$("div#loading").hide();
$("button#btnConnect").show();
}
})
})
})
</script>
}
当我点击“连接”按钮时,Ajax 没有找到 Url:/Call/Connecting
我怀疑 ajax 调用中使用的 url:
url: "/Call/Connecting"
它是从根路径开始的。如果您在“/Call”不是根目录的环境中部署应用程序,您将收到 404。例如,如果您在 http://example.com/my_cool_app 部署了您的应用程序。那么 url 应该是“/my_cool_app/Call/Connecting”。我建议使用 Url.Action 帮助程序动态构建您的操作端点,而不是对其进行硬编码。
我对具有 POST 属性的操作有疑问。 当我使用 IIS Express Server 时,一切正常,但是当我使用本地 IIS 时,GET 操作工作正常,当我的 Web 应用程序中调用 post 操作时,出现以下错误:
HTTP Error 404.0 - Not Found The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
例如 CallController 中的此操作:
[HttpPost]
public PartialViewResult Connecting(FarakhanModels fara)
{
try
{
fara.IP = fara.IP.Trim();
IPAddress IP = IPAddress.Parse(fara.IP);
socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
socket.Connect(IP, fara.Port);
fara.IsConnected = true;
}
catch (Exception ex)
{
fara.ErrorMessage = ex.Message;
fara.IsConnected = false;
}
return (PartialView(viewName: "_Partial_Connect", model: fara));
}
对此观点:
<h4>Call group</h4>
<hr />
<div id="connect">
<div id="loading">
<img src="~/Images/ajax-loader.gif" title="loading" />
Loading... Please Wati !
</div>
<br />
<div class="col-md-9 col-sm-9">
<span class="col-md-3">Connect to server:</span>
<input type="search" id="ip" />
</div>
<br />
<br />
<div class="col-md-9 col-sm-10">
<span class="col-md-3 col-sm-3">Port:</span>
<input type="search" id="port" />
</div>
<br />
<br />
<br />
<div class="col-md-2 col-md-offset-3">
<button type="button" class="btn-primary" id="btnConnect">Connect</button>
@*<input type="button" id="btnConnect" name="btnConnect" value="Connect" style="width:120px" />*@
</div>
<div class="col-md-12" id="message">
</div>
<br />
<br />
@section Scripts {
<script>
$(document).ready(function () {
$("div#loading").hide();
$("div#call").hide();
$("button#btnConnect").click(function () {
$("div#message").html("");
$("div#loading").show();
$("button#btnConnect").hide();
var varIp = $("input#ip").val();
var varPort = $("input#port").val();
var varData =
{
ip: varIp,
port: varPort,
};
$.ajax({
type: "POST",
dataType: "html",
data: varData,
url: "/Call/Connecting",
error: function (response) {
$("div#message").html(response.error.toString());
},
success: function (response) {
$("input#ip").val("");
$("input#port").val("");
$("div#call").show();
$("div#connect").hide();
$("div#partialView").html(response);
},
complete: function (response) {
$("div#loading").hide();
$("button#btnConnect").show();
}
})
})
})
</script>
}
当我点击“连接”按钮时,Ajax 没有找到 Url:/Call/Connecting
我怀疑 ajax 调用中使用的 url:
url: "/Call/Connecting"
它是从根路径开始的。如果您在“/Call”不是根目录的环境中部署应用程序,您将收到 404。例如,如果您在 http://example.com/my_cool_app 部署了您的应用程序。那么 url 应该是“/my_cool_app/Call/Connecting”。我建议使用 Url.Action 帮助程序动态构建您的操作端点,而不是对其进行硬编码。