Html链接onclick,jquery函数,redirectToAction IIS服务器不工作?
问题描述:
我很努力地使用我的子菜单后发布到IIS服务器。 由于某种原因,第一次重定向工作正常,它给了我一个302找到。然后,当它尝试重定向到操作并返回一个partialview时,它会给我一个500内部服务器错误代码。Html链接onclick,jquery函数,redirectToAction IIS服务器不工作?
我想更新另一个局部视图内的partialview。此代码在VS环境中本地工作,但是当我将其推送到IIS服务器时,它不起作用。
我试过寻找相当一段时间,但找不到任何有用的东西。我对MVC和IIS相当陌生。
我的HTML看起来像这样:
<div class="wrapper">
<ul id="submenu">
<li><a class="LinkPart" href="#" onclick="getPartial(1);">Some subpage</a></li>
<li><a class="LinkPart" href="#" onclick="getPartial(2);">Some subpage</a></li>
<li><a class="LinkPart" href="#" onclick="getPartial(3);">Some subpage</a></li>
<li><a class="LinkPart" href="#" onclick="getPartial(4);">Some subpage</a></li>
<li><a class="LinkPart" href="#" onclick="getPartial(5);">Some subpage</a></li>
<li><a class="LinkPart" href="#" onclick="getPartial(6);">Some subpage</a></li>
</ul>
</div>
<div class="right-box">
<div id="right-box" class="data" style="visibility:visible;">
@Html.Partial("~/Views/Admin/_AdminPartial.cshtml")
</div>
</div>
的Javascript在CSHTML
function getPartial(y) {
$.get(location.href = '@Url.Action("_PartialPickAdminpage", "Admin")/' + y, function (data) {
$('div#right-box.data').html(data);
})
}
的底部,我的控制器看起来像这样,在动作中的一个示例:
[Authorize(Roles = "Administrator")]
[HttpGet]
public ActionResult _PartialPickAdminpage (string id)
{
int newid = Convert.ToInt32(id);
Debug.WriteLine("id partialpickAdminpage: " + id);
if (newid.Equals(1))
{
return RedirectToAction("Register", "Account");
}
else if (newid.Equals(2))
{
return RedirectToAction("_SomePagePartial");
}
else if (newid.Equals(3))
{
return RedirectToAction("_SomePagePartial");
}
else if (newid.Equals(4))
{
return RedirectToAction("_SomePagePartial");
}
else if (newid.Equals(5))
{
return RedirectToAction("_SomePagePartial");
}
else if (newid.Equals(6))
{
return RedirectToAction("_SomepagePartial");
}
else
{
return PartialView("~/Views/Account/_ChangePasswordPartial.cshtml");
}
}
[Authorize(Roles = "Administrator")]
public PartialViewResult _SomePagePartial()
{
TempData["ErrorMessage"] = "";
return PartialView("~/Views/Admin/_SomePagePartial.cshtml");
}
我注意到的一件事是,只要我点击其中一个链接,它就会运行_Parti alPickAdminpage在本地调用两次,但只在IIS上一次并超时。
在服务器上的日志文件中找到了它。
2016-12-19 10:46:53 192.168.0.145 GET /playlist - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 - 200 0 0 62
2016-12-19 10:46:53 192.168.0.145 GET /Playlist/Views/StyleSheet.css - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/playlist 404 0 0 0
2016-12-19 10:46:53 192.168.0.145 GET /Playlist/Views/StyleSheet.css - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/playlist 404 0 0 15
2016-12-19 10:47:00 192.168.0.145 GET /Playlist/Admin/AdminSection - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/playlist 200 0 0 46
2016-12-19 10:47:10 192.168.0.145 GET /Playlist/Admin/_PartialPickAdminpage/1 - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/Playlist/Admin/AdminSection 302 0 0 0
2016-12-19 10:47:10 192.168.0.145 GET /Playlist/Admin/_PartialPickAdminpage/1 - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/Playlist/Admin/AdminSection 302 0 0 203
2016-12-19 10:47:40 192.168.0.145 GET /Playlist/Account/Register - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/Playlist/Admin/AdminSection 500 0 0 30150
2016-12-19 10:48:10 192.168.0.145 GET /Playlist/Account/Register - 80 nasoon 192.168.0.137 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 http://to-be-more/Playlist/Admin/AdminSection 500 0 0 40306
账户控制器与注册动作:
[Authorize(Roles = "Administrator")]
[HttpGet]
public ActionResult Register()
{
UserRepository ur = new UserRepository();
var list = ur.MyListTable();
var model = new RegisterModel();
model.DropDownList = new SelectList(list, "RoleID", "RoleName");
return PartialView(model);
}
连接字符串到数据库,出演了用户名和密码:
Data Source=TO-BE-MORE\SQL2016;Initial Catalog=tbmplaylist;Persist Security Info=True;User ID=****;Password=****
答
1)数据库的连接不是最初发生得如此之500内部错误。[timeout execption]一些函数使用本地连接字符串(ADO.net)。在web.config中使用两个连接字符串,一个用于EF,一个用于ADO.net。
<add name="Database1Entities" connectionString="metadata=res://*/Models.Database1Entities1.csdl|res://*/Models.Database1Entities1.ssdl|res://*/Models.Database1Entities1.msl;provider=System.Data.SqlClient;provider connection string='Data Source=TO-BE-MORE\SQL2016;initial catalog=tbmplaylist;MultipleActiveResultSets=True;User ID=****;Password=****;Connection Timeout=120;App=EntityFramework'" providerName="System.Data.EntityClient"/>
<add name="Database1EntitiesADO" connectionString="Data Source=TO-BE-MORE\SQL2016;initial catalog=tbmplaylist;MultipleActiveResultSets=True;User ID=***;Password=****;Connection Timeout=120;App=EntityFramework"/>
然后在方法调用是这样的:
System.Configuration.ConfigurationManager.ConnectionStrings["Database1EntitiesADO"].ConnectionString
2)被称为将返回一个ActionResult动作。所以不会得到部分结果。
3)Redirecttoaction创建一个新的请求,所以初始查询将首先被执行,然后end_request将被调用,然后new_request被创建,这是两次执行的原因。
更改的jQuery脚本看起来像这样固定的问题2和3:
function getPartial(y) {
$.get('_PartialPickAdminpage/' + y, function (data) {
$('div#right-box.data').html(data);
})
}
评论不适合广泛的讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/130951/discussion-on-question-by-nasoon-html-link-onclick-jquery-function-redirecttoa)。 –
System.Configuration.ConfigurationManager。 ConnectionStrings [“connectionStringName”]。ConnectionString; 。这将从webconfig中读取连接字符串 – FakeisMe