Questions tagged «asp.net-mvc-5»

ASP.NET MVC 5是用于Web应用程序的ASP.NET Model-View-Controller平台的第五个主要版本。

21
新的Asp.Net MVC5项目产生一个无限循环来登录页面
我正在用Visual Studio 2013创建一个全新的项目,我选择Asp.Net MVC和框架4.5.1创建了项目,然后,除了F5以外,我什么也不做来启动默认网页。不幸的是,它会产生一个到登录页面的重定向,该页面也正在重定向到登录页面。这是我在浏览器中拥有的url的简短版本: http://localhost:5285/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%2525252FLogin%2525253FReturnUrl%2525253D%252525252FAccount%252525252FLogin%252525253FReturnUrl%252525253D%25252525252FAccount%25252525252FLogin%25252525253FReturnUrl%25252525253D%2525252525252FAccount%2525252525252FLogin%2525252525253FReturnUrl%2525252525253D%252525252525 我在事件查看器中没有任何错误。但是在屏幕上我看到了: “ HTTP错误404.15-找不到请求过滤模块被配置为在查询字符串太长的情况下拒绝请求。” 该网站使用IIS Express中的默认设置运行。我该如何解决这个问题?我猜我的Visual Studio 2013有问题吗? 编辑 如果我创建了一个全新的网站并将其托管在IIS中,那么它将起作用。但是,如果我创建了一个新网站(不进行任何修改)并且只是点击播放(默认情况下将启动IIS Express),则不会。 编辑2 我已经删除了Documents \ IISExpress \ config \ applicationhost.config中的每个网站。我重新编译了所有内容,并创建了以下条目: <siteDefaults> <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> </siteDefaults> <applicationDefaults applicationPool="Clr4IntegratedAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites> IIS Express仍然出现错误,而不是IIS。

5
Roslyn“需要”什么/为什么在Asp.Net的/ bin文件夹中
有一堆相关的问题在此,虽然大部分的答案定义罗斯林和/或提供“修复”一些问题(exe与托管服务提供商等) 我似乎无法追踪的是中的“为什么”和“目的”(也许仅在ASP.Net MVC / Web API的上下文中)/bin/roslyn。 我遇到了类似的问题(托管-.exe限制,支持4.6等),我的“解决方案”是“仅部署到Azure”(当然,一切正常。)但是实际上,这并不能回答: 为什么需要它们? 这是否意味着它们被用于runtime编译(我的大脑指出了这一点,但这是一个完整的猜测/我也许是错的骗子),如该SO帖子所示-除非更正,否则为“它”(下文中有更多介绍)。 似乎“删除软件包”是一个“修复” (根据过去的一些答案),但如果是这样,它(重新)会产生问题 我认为了解这一点将有所帮助-例如,我不能成为唯一看到.exe“需要”的人而扬眉的人。 更新资料 证明“隐藏的宝石”的存在:)我已经读了一遍又一遍...毕竟它已经存在了一段时间了- 但不是评论线程-最初引用的链接(大约在2014年)已由Microsoft和注释不再显示。幸运的是,下面是相关部分。 大错误-一直在盯着我(或至少自从这次交流以来): Dmitry Dzygin 2015年6月2日上午12:53 我已经尝试了NuGet软件包的最新版本,但是加载/执行编译器的方式似乎有所不同。 在v0.2.0.0中,Roslyn编译器将被加载到内存中,从而极大地提高了具有多个* .as * x / *。cshtml文件的未预编译网站的性能。但是,新版本具有一个新/bin/roslyn/csc.exe文件,该文件每个文件执行一次,从而完全删除了上述优化功能..... 金: XMao 2015年6月2日下午1:22 @Dmitry的的工作csc.exe中/bin/Roslyn是调用VBCSCompiler.exe,在同一文件夹它坐落。VBCSCompiler.exe 是执行实际编译工作的过程。如果VBCSCompiler已经在运行,则csc.exe将对其进行重用,因此我们仍将获得所提及的性能改进。 嗯... 更新:10/2017 似乎这与所有时间有关,因此需要进一步更新。 @Donny V下面的答案是一个选择。通过完全编译您的应用程序(包括所有Views(.cshtml/ .vbhtml)),您无需exe在应用程序中使用它。 即使Visual Studio(到今天,VS 2017,令人困惑)仍会/bin/roslyn在Publish过程中创建及其内容,即使设置了“ full compile”,也是如此。 您可以通过测试该排除的/bin/roslyn文件夹,并推动应用程序到你的托管服务提供商时,它的内容。 警告: 如前所述,完全编译您的应用程序意味着您必须重新编译它,即使是View更改级别也是如此。

12
更新用户数据-ASP.NET身份
我向ApplicationUser类添加了自定义字段, 还创建了一种表单,用户可以通过该表单输入/编辑字段。 但是由于某种原因,我无法更新数据库中的字段。 [HttpPost] [ActionName("Edit")] [ValidateAntiForgeryToken] public async Task<ActionResult> Manage(EditProfileViewModel model) { if (ModelState.IsValid) { // Get the current application user var user = User.Identity.GetApplicationUser(); // Update the details user.Name = new Name { First = model.FirstName, Last = model.LastName, Nickname = model.NickName }; user.Birthday = model.Birthdate; // This is …

18
Razor文件(.cshtml)中的IntelliSense停止工作
Intellisense在剃刀文件中不起作用: 在我的web.conifg文件中(在Views文件夹中)显然是正确的: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" …

8
MVC5,Web API 2和Ninject
我使用Web API 2创建了一个新的MVC5项目,然后从NuGet添加了Ninject.MVC3包。 构造函数注入对于MVC5控制器运行良好,但是尝试将其与Web API控制器一起使用时出现错误。 尝试创建“ UserProfileController”类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。 适用于MVC5控制器的构造函数: public class HomeController : Controller { private IMailService _mail; private IRepository _repo; public HomeController(IMailService mail, IRepository repo) { _mail = mail; _repo = repo; } } 非工作Web API控制器的构造函数: public class UserProfileController : ApiController { private IRepository _repo; public UserProfileController(IRepository repo) { _repo …

21
Asp.NET Identity 2给出“无效令牌”错误
我正在使用Asp.Net-Identity-2,并且尝试使用以下方法来验证电子邮件验证代码。但是我收到“无效令牌”错误消息。 我的应用程序的用户管理器是这样的: public class AppUserManager : UserManager<AppUser> { public AppUserManager(IUserStore<AppUser> store) : base(store) { } public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context) { AppIdentityDbContext db = context.Get<AppIdentityDbContext>(); AppUserManager manager = new AppUserManager(new UserStore<AppUser>(db)); manager.PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = true, …

2
将HTML表发布到ADO.NET DataTable
我的视图中有一个HTML表格,如下所示: <table id="tblCurrentYear"> <tr> <td>Leave Type</td> <td>Leave Taken</td> <td>Leave Balance</td> <td>Leave Total</td> </tr> @foreach (var item in Model.LeaveDetailsList) { <tr> <td>@Html.TextBoxFor(m => item.LeaveType, new { width = "100" })</td> <td>@Html.TextBoxFor(m => item.LeaveTaken, new { width = "100" })</td> <td>@Html.TextBoxFor(m => item.LeaveBalance, new { width = "100" })</td> <td>@Html.TextBoxFor(m => item.LeaveTotal, …

7
没有OWIN身份验证管理器与此请求关联
在尝试对我的Web Api项目启用owin和AspNet身份(在VS 2013 + .Net 4.5.1中)后,我在每个有效或无效(对不存在的控制器的请求)请求中收到以下错误: <Error> <Message>An error has occurred.</Message> <ExceptionMessage> No OWIN authentication manager is associated with the request. </ExceptionMessage> <ExceptionType>System.InvalidOperationException</ExceptionType> <StackTrace> at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() …

5
ASP.NET MVC 5与WebMatrix SimpleMembershipProvider不兼容吗?
我们有一个基于ASP.NET MVC 4和Web API构建的现有应用程序。该站点的管理部分使用简单成员资格。我有兴趣将应用程序升级到MVC 5 / Web API 2,以利用已添加的一些新功能。但是看起来它们可能不兼容。 具体来说,将NuGet的RC软件包安装到我的解决方案中的一个项目中,并更新web.config信息后,该应用程序在启动过程中会在调用的行上开始死亡WebSecurity.InitializeDatabaseConnection(),但以下情况除外: [MethodAccessException: Attempt by security transparent method 'WebMatrix.WebData.PreApplicationStartCode.OnConnectionOpened(System.Object, WebMatrix.Data.ConnectionEventArgs)' to access security critical method 'System.Web.WebPages.HttpContextExtensions.RegisterForDispose(System.Web.HttpContextBase, System.IDisposable)' failed.] WebMatrix.WebData.PreApplicationStartCode.OnConnectionOpened(Object sender, ConnectionEventArgs e) +70 WebMatrix.Data.Database.OnConnectionOpened() +70 WebMatrix.Data.Database.EnsureConnectionOpen() +51 WebMatrix.Data.Database.QueryValue(String commandText, Object[] args) +63 WebMatrix.WebData.DatabaseWrapper.QueryValue(String commandText, Object[] parameters) +13 WebMatrix.WebData.SimpleMembershipProvider.GetUserId(IDatabase db, String userTableName, String …

5
如何在Microsoft.AspNet.Identity.EntityFramework.IdentityUser中更改ID的类型
(ASP.NET MVC 5,EF6,VS2013) 我试图弄清楚如何将“ Id”字段的类型从字符串更改为int类型: Microsoft.AspNet.Identity.EntityFramework.IdentityUser 为了使新用户帐户与整数ID而不是GUID相关联。但是,这似乎比在派生的用户类中简单地添加一个类型为int的新Id属性要复杂得多。看一下这个方法签名: (来自程序集Microsoft.AspNet.Identity.Core.dll) public class UserManager<TUser> : IDisposable where TUser : global::Microsoft.AspNet.Identity.IUser { ... public virtual Task<IdentityResult> AddLoginAsync(string userId, UserLoginInfo login); ... } 因此,似乎还有其他方法已植入ASP.NET身份框架中,这些方法要求userId为字符串。我还需要重新实现这些类吗? 关于为什么我不想在用户表中存储ID的GUID的解释: -将有其他表通过外键将数据与用户表相关联。(当用户将内容保存在网站上时。)我没有理由使用较大的字段类型并花费额外的数据库空间,而没有明显的优势。(我知道还有其他关于使用GUID和int id的文章,但是似乎很多人建议int id更快,使用更少的空间,这仍然让我感到疑惑。) -我计划公开一个宁静的端点,以允许用户检索有关特定用户的数据。我认为: /users/123/name 比...干净 /users/{af54c891-69ba-4ddf-8cb6-00d368e58d77}/name 有谁知道ASP.NET团队为何决定以这种方式实现ID?在尝试将其更改为int类型时,我是不是目光短浅?(也许我缺少一些好处。) 谢谢... -本

11
ASP.NET MVC5 OWIN Facebook身份验证突然不起作用
更新2017! 我发布原始问题时遇到的问题与Facebook最近迫使所有人都使用其API版本2.3时所做的更改无关。有关该特定问题的解决方案,请参见下面的sammy34的答案。/ oauth / access_token端点的2.3版现在返回JSON而不是表单编码的值 由于历史原因,这是我最初的问题/问题: 我有一个MVC5 Web应用程序,该应用程序使用通过Facebook和Google进行身份验证的内置支持。几个月前构建此应用程序时,我们遵循了本教程:http : //www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and -google-oauth2-和-openid-sign-on,一切正常。 现在,突然之间,Facebook身份验证完全停止了工作。Google身份验证仍然有效。 问题描述:我们单击链接以使用Facebook进行连接,如果我们不想允许我们的Facebook应用程序访问我们的个人资料,则会重定向到Facebook,并在其中提示您。当我们单击“确定”时,我们将被重定向回我们的站点,但是没有登录,我们只是在登录屏幕上结束了。 我已经在调试模式下完成了此过程,并且按照上述教程在我的帐户控制器中获得了此ActionResult: // GET: /Account/ExternalLoginCallback [AllowAnonymous] public async Task<ActionResult> ExternalLoginCallback(string returnUrl) { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return RedirectToAction("Login"); } ............ 单步执行代码时以及从Facebook返回时,loginInfo对象始终为NULL,这将导致用户被重定向回登录名。 为了了解幕后实际发生的情况,我安装了Fiddler并监视了HTTP流量。我发现,在Facebook权限对话框中单击“确定”后,Facebook使用以下URL重定向回我们的应用程序: https://localhost/signin-facebook?code=<access-token> 这个URL不是一个实际的文件,可能是由我猜测在此OWIN框架中内置的某些控制器/处理程序处理的。它很可能使用给定的代码连接回Facebook,以查询有关尝试登录的用户的信息。现在,问题是我们没有这样做,而是被重定向到: /Account/ExternalLoginCallback?error=access_denied 我确定Facebook正在做某件事,也就是说,它没有向我们提供用户数据,而是通过此错误消息将我们重定向回去。 这会导致AuthenticationManager.GetExternalLoginInfoAsync();失败,并始终返回NULL。 我完全没有主意。据我们所知,我们并没有做出任何改变。 我尝试创建一个新的Facebook应用程序,尝试再次按照该教程进行操作,但是我始终遇到相同的问题。 任何想法欢迎! 更新! 好吧,这让我发疯了!现在,我已经手动完成了执行身份验证所需的步骤,当我这样做时,一切都很好。为什么在使用MVC5 …

3
Visual Studio 2017无法启动调试适配器'chrome'
我有asp.net mvc 5项目。当我尝试使用启用的脚本调试模式并使用Chrome启动调试时,Visual Studio 2017显示错误: 当我在Visual Studio调试选项中设置“为ASP.NET启用旧版Chrome JavaScript调试器”时,它可以工作: 但是,如何在不启用旧版Chrome JavaScript调试器的情况下解决此问题?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.