图像上传在本地主机,但不是在IIS服务器[Asp.net的Mvc]
问题描述:
我正在一个MVC项目,我试图上传一个图像通过AJAX;这在localhost上工作正常,但它在IIS Web服务器上不起作用。一旦我按提交按钮,它会显示控制台上的错误,并说:图像上传在本地主机,但不是在IIS服务器[Asp.net的Mvc]
“http://blahblahmywebsite.com/UserRegistration/UserPhoto 500(内部服务器错误)”。
我在这个问题上挣扎了2天了,有什么建议吗?
N.B.
- >我曾尝试已经:网址: '@ Url.Action( “FunctionName”, “控制器”)'
- >应用程序池操作(通过其他网上的帖子建议)
- >我GoDaddy的托管服务器上这个网站,其使用的是IIS 8
- >我使用.NET 4.5.2本地服务器
这是我的jQuery:
$("#fileUserImage").change(function() {
userImage();
});
function userImage() {
var formData = new FormData();
var totalFiles = document.getElementById("fileUserImage").files.length;
for (var i = 0; i < totalFiles; i++) {
var file = document.getElementById("fileUserImage").files[i];
formData.append("fileUserImage", file);
}
$.ajax({
type: "POST",
url: '/UserRegistration/UserPhoto',
data: formData,
dataType: 'json',
contentType: false,
processData: false,
success: function (image) {
$("#imgUserImage").attr('src', '../' + image);
alert("Entered into success block");
},
error: function (error) {
alert("Entered into error block");
}
});
}
这是我的HTML:
<div class="form-group">
<label class="col-md-5 control-label">Photo</label>
<div class="col-md-7">
<input type="file" id="fileUserImage" name="fileUserImage">
</div>
</div>
<div class="form-group">
<div class="img-wrap col-md-offset-5">
<img class="example-image" id="imgUserImage" width="220" style="padding-left:17px;" />
</div>
</div>
这是我的控制器:
[HttpPost]
public JsonResult UserPhoto()
{
var userPic = "";
for (int i = 0; i < Request.Files.Count; i++)
{
var file = Request.Files[i];
if (file != null)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/User/"), DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + fileName);
file.SaveAs(path);
userPic = "Images/User/" + DateTime.Now.Day + "" + DateTime.Now.Month + "" + DateTime.Now.Year + fileName;
}
else
{
userPic = "";
}
}
return Json(userPic, JsonRequestBehavior.AllowGet);
}
答
我托管在远程服务器上我的网站,并有同样的问题。后来我发现应用程序用户没有图像文件夹的添加/编辑权限。
在500内部服务器错误中,您总是需要做的绝对首要事情就是检查相关的错误日志。 (如果您无权访问,请寻求支持。) – CBroe
IT回复: 服务器上发生应用程序错误。此应用程序的当前自定义错误设置可防止远程查看应用程序错误的细节(出于安全原因)。但是,它可以通过本地服务器上运行的浏览器来查看。 –
_“当前的自定义错误设置为这个应用程序阻止”_ - 那么我建议你首先改变这些设置。 – CBroe