SimpleMembership、MVC4、AuthorizeAttribute 和角色

2023-11-22

我正在尝试向我的一些 MVC4 控制器添加授权属性,只要它是一个计划,它们就可以正常工作[Authorize] or [Authorize(Users="myuser")],但是当我添加任何类型的角色过滤时,它就会崩溃,例如。[Authorize(Roles="admin")]。然后我开始收到如下错误:

“/”应用程序中的服务器错误。

发生网络相关或特定于实例的错误 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/实例时出错 指定的)

描述:执行期间发生未处理的异常。 当前的网络请求。请查看堆栈跟踪以了解更多信息 有关错误及其在代码中的来源的信息。

SQLExpress数据库文件自动创建错误:

连接字符串指定本地 Sql Server Express 实例 使用应用程序的 App_Data 目录中的数据库位置。 提供商尝试自动创建应用程序 服务数据库,因为提供商确定该数据库 不存在。需要满足以下配置要求 成功检查应用程序服务是否存在 数据库并自动创建应用程序服务数据库:

如果应用程序在 Windows 7 或 Windows Server 上运行 2008R2,需要特殊配置步骤才能启用自动 创建提供商数据库。提供更多信息 在:http://go.microsoft.com/fwlink/?LinkId=160102。如果 应用程序的 App_Data 目录尚不存在,web 服务器帐户必须具有对应用程序的读写权限 目录。这是必要的,因为网络服务器帐户将 如果尚未创建 App_Data 目录,则自动创建 存在。如果应用程序的App_Data目录已经存在,则Web 服务器帐户仅需要读取和写入权限 应用程序的 App_Data 目录。这是必要的,因为网络 服务器帐户将尝试验证 Sql Server Express 数据库已存在于应用程序的 App_Data 目录中。 从 Web 服务器撤销对 App_Data 目录的读取访问权限 帐户将阻止提供商正确确定是否 Sql Server Express 数据库已存在。这会导致错误 当提供者尝试创建已经存在的副本时 现有数据库。需要写访问权限,因为 Web 服务器 创建新数据库时将使用帐户的凭据。 sql 计算机上必须安装 Server Express。进程标识 Web 服务器帐户必须具有本地用户配置文件。请参阅 自述文件详细了解如何创建本地用户配置文件 机器帐户和域帐户。

来源错误:

执行期间产生未处理的异常 当前的网络请求。有关原产地和地点的信息 可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[SqlException (0x80131904):与网络相关或特定于实例的 建立与 SQL Server 的连接时发生错误。这 找不到服务器或无法访问服务器。验证实例 名称正确并且 SQL Server 配置为允许远程 连接。 (提供商:SQL 网络接口,错误:26 - 错误 查找指定的服务器/实例)]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常、布尔中断连接、操作1 wrapCloseInAction) +5295167 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +5307115
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +145
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +920
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) +434
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5309659
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 次重试,DbConnectionOptions 用户选项、DbConnectionInternal& 连接)+5311874
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection 外部连接、DbConnectionFactory 连接工厂、 任务完成源1 retry, DbConnectionOptions userOptions) +143
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 重试)+83 System.Data.SqlClient.SqlConnection.Open()+96
System.Web.Management.SqlServices.GetSqlConnection(字符串服务器, 字符串用户、字符串密码、布尔信任、字符串 连接字符串)+76

[HttpException (0x80004005): 无法连接到 SQL Server 数据库。]
System.Web.Management.SqlServices.GetSqlConnection(字符串服务器, 字符串用户、字符串密码、布尔信任、字符串 连接字符串)+131
System.Web.Management.SqlServices.SetupApplicationServices(字符串 服务器,字符串用户,字符串密码,布尔信任,字符串 连接字符串、字符串数据库、字符串dbFileName、SqlFeatures 功能,布尔安装)+89
System.Web.Management.SqlServices.Install(字符串数据库,字符串 dbFileName, 字符串连接字符串) +27
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(字符串 fullFileName、字符串数据目录、字符串连接字符串)+386

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.17929

我真的不确定这里发生了什么。同样,如果我删除授权属性的角色位,那么它就可以正常工作(至少可以阻止未经授权的用户),但如果我必须将管理员用户硬编码到应用程序中,那就不好了!

知道这里发生了什么,以及如何让它正常工作吗?

Thanks,


我已经找到了解决方案(尽管我确信有更好的方法)。首先,SimpleMembership 使用的数据库初始化得不够早,所以我移动了该行:

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

到 Global.asax 文件并确保它尽早运行。该代码行可以在 Filters -> InitializeSimpleMembershipAttribute.cs 中找到,大约第 41 行

编辑:看来接下来的一点是没有必要的......

其次,[InitializeSimpleMembership]属性需要添加到任何成员资格可能成为问题的类中 - 对我来说这就是所有类,所以我添加了以下行:

filters.Add(new InitializeSimpleMembershipAttribute());

到 app_start 文件夹中的 FilterConfig.cs 文件。

这两个简单的改变似乎已经解决了这个问题。我确信我可以对 MVC4 中包含的 SimpleMembership 内容的一般工作进行一些改进 - 它看起来写得不太好(硬编码连接字符串等!),所以这些问题可能是通过首先将 SimpleMembership 的内容写得很好来解决!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SimpleMembership、MVC4、AuthorizeAttribute 和角色 的相关文章

  • ASP.NET MVC4 教程/脚手架 - 验证和显示使用几种不同的区域设置

    我正在使用 VS 2012 RC 并尝试从此处遵循 MVC4 教程 http www asp net mvc tutorials mvc 4 getting started with aspnet mvc4 accessing your m
  • EntityFramework.dll 中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理

    我正在尝试为部门名称制作下拉列表 我正在使用MVC5 我看到了太多关于堆栈溢出的解决方案 但我从未找到与 MVC5 相关的有价值的解决方案 Database Name AppraisalDBContext Table Name Depart
  • ApiController 操作无法从查询字符串解析数组

    使用 Visual Studio 2012 2 MVC4 Web 应用程序 我有请求发送到我的 ApiController 如下所示 http localhost api keys ids 1 ids 2 ids 3 我的印象是以下方法应该
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • 在 mvc4 中创建通用 mvc 视图

    我以前也提过类似的问题 没有得到答案 如何创建一个通用的 mvc4 视图 该视图可以显示传递给它的模型列表或单个模型 模型可以是个人 组织或团体 无论传递给它的是什么 如果您正在寻找类似的东西 model MyViewModel
  • ASP.NET MVC 粘贴到剪贴板

    我有一个 ASP NET MVC 4 应用程序 我想复制文本 从 PDF CTRL C 并将其作为参数粘贴到控制器的方法中 我的网络网格有一个带有 ActionLink 的列 grid Column format a href Url Ac
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab
  • 在 MVC 4 中的另一个表单中验证 JQuery UI 模式表单

    我在 MVC 4 中有一个表单 其中包含多个字段 根据组合的值 我需要打开一个模式对话框表单并加载到这 3 个附加字段中 这些字段将影响我正在创建的同一实体 在主窗体中进行编辑 对于这个模式对话框 我使用的是 jQuery UI 中的对话框
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • MVC 将 PartialViewResult 渲染为字符串

    免责声明 我编辑了问题 因为我改变了过程 但它并没有改变任何问题 我正在尝试获得一个PartialViewResult呈现为字符串 我尝试使用RenderRazorViewToString这个问题的方法将视图渲染为字符串 https sta
  • ASPXAUTH Cookie 的安全标志

    我们有一个面向外部的应用程序 由外部安全公司进行了渗透测试 应用程序在 ASP NET MVC4 上开发并在 IIS8 Windows 2012 Server 上运行 报告的漏洞之一是 ASPXAUTH 不安全 当我检查 cookie 检查
  • 布局中的模型破坏了其他页面

    由于缺乏 MVC4 经验 我有一个设计缺陷 问题是我的布局中有一个模型 model BasicFinanceUI Models LoginModel Content Site css rel stylesheet type text css
  • MVC4:jQuery 验证不显眼的本机工作不正确

    我的 MVC4 Web 应用程序是在 Umbraco 7 上构建的 我已经安装了以下 nuget 软件包 jQuery 1 10 2 jQuery Validation 1 11 1 jQuery Validation Unobtrusiv
  • 如何在MVC中获取控制器中的下拉值

    我使用递归函数使用字符串列表绑定下拉列表我的下拉菜单具有类似的值 家 首页 gt gt 厨房 首页 gt gt 厨房 gt gt ABC 我想在数据库中使用相同的下拉值 ABC 这是我的查看代码 ViewBag Title Createne
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • MVC4 输入字段占位符

    Does MVC4默认支持placeholders对于生成的输入字段 我没有找到任何东西 所以我正在尝试实现我自己的 但不幸的是Prompt E Mail 没有传递到ViewData ModelMetadata Watermark同时产生控
  • 执行Insert命令并返回Sql中插入的Id

    我正在 MVC 4 中使用 C 将一些值插入到 SQL 表中 实际上 我想插入值并返回最后插入记录的 ID 我使用以下代码 public class MemberBasicData public int Id get set public
  • Web API 操作过滤器 - Controller.TempData 等效吗?

    在我的 System Web Mvc Action 过滤器中 我之前使用 TempData 来存储我的 unitOfWork 服务的实例 如下所示 public override void OnActionExecuting ActionE
  • 如何使用 ASP.NET MVC 4.0 DonutOutputCache VaryByCustom 使缓存失效

    我正在为我的 ASP NET 应用程序使用 DevTrends MvcDonutCaching 包 它工作得很好 我目前遇到的一个问题是使我为子操作设置的 VaryByCustom 缓存无效 这是我用于 VaryByCustom 设置的一些
  • MVC4 枚举和单选按钮列表

    我已经看到了一些关于此的线程 但似乎没有一个适用于 MVC4 因为 RadioButtonFor html 扩展方法 帮助程序不存在 假设我有一个枚举列表 即航空公司 public enum Airlines Unknown 0 Briti

随机推荐

  • 新的 C# 异步功能是否在编译器中严格实现

    作为一名对探索 事物如何工作 感兴趣的 C 程序员 我有兴趣更多地了解创造新事物的过程async特色工作 我关注了 Eric Lippert 关于异步的优秀文章系列 异步博客文章 我不记得在任何地方看到过任何关于此功能的实现 在高级别上 的
  • 动态改变CSS

    我需要确定哪个CSS应该应用于某些特定页面 我有一个包含子项和内容的母版页默认 aspx and 服务 aspx是母版页的子级 我想要的是当用户导航时默认 aspx or 服务 aspx 系统应适用默认CSS文件否则我想应用一些普通CSS
  • Apache 身份验证:失败时重定向,可靠吗?

    我已将 ErrorDocument 401 设置为指向我网站的帐户创建页面 但并非所有浏览器似乎都支持此重定向 Safari 此外 其他浏览器 Firefox Chrome 永远不会停止询问密码并显示 ErrorDocument 这导致大量
  • .lite 和 .tflite 格式之间有什么区别

    两者有什么区别 lite和 tflite格式 TensorFlow 格式 如果没有区别 为什么会有两个 除了问题之外 我似乎无法使用以下命令上传我的模型 liteFirebase ML 套件的扩展文件 原因可能是什么 ML 开发人员首先训练
  • 自动完成用户输入 PowerShell 2.0

    我有一个很大的数据列表 超过 1000 个不同的值 我希望用户能够从 PowerShell 控制台的列表中选择某些值 在控制台中允许用户快速选择值的最简单方法是什么 我想做一些诸如制表符补全或使用箭头键滚动值的功能 但我不确定如何执行这些操
  • Qt嵌入编译错误。修复“错误:没有这样的指令”错误

    我正在尝试使用安装在 home user Software 的 beagle 板的 angstrom 工具链来编译 qt 4 7 4 我收到的错误是 corelib arch qatomic arm h 131 错误 没有这样的指令 swp
  • jQuery 加载函数

    我使用以下脚本来调用 onload 函数 但它在 IE 中不起作用 body attr onload calFact 如果您使用 jQuery 您可以使用ready 函数如下 function callFact 或者更简单 只需将方法传递给
  • 检查 JSON 中是否存在子对象

    我正在使用以下命令检查 JSON 字符串中的对象是否存在 JSONObject json null try json new JSONObject myJsonString catch JSONException e e printStac
  • 与 Java 11 兼容的最低 Spring 版本

    我需要很快将应用程序升级到 Java 11 我想知道与 Java 11 兼容的最低 Spring 版本是多少 我目前正在使用 Java 8 和 Spring 4 2 7 从他们的任务跟踪器 SPR 16391 与 JDK 11 的兼容性 J
  • 如何 grep 查找文件中的 URL?

    例如 我有一个巨大的 HTML 文件 其中包含 img URL http ex example com hIh39j ud9wr4 Uusfh jpeg 我想获取这个 URL 假设它是only整个文件中的 url cat file html
  • 从 Windows 命令提示符交互式运行 R [关闭]

    Closed 这个问题是无关 目前不接受答案 我需要从 win 中的命令提示符交互式启动 R 以便能够显示绘图 知道我该怎么做吗 谢谢 输入适合您系统的正确版本 C path to R bin R 该完整路径可以从 R 的安装位置获取 或者
  • Vim - 激活 PHP 文件上的 HTML 片段

    我正在使用vim和snipMate 很多时候我需要将HTML文件命名为PHP 只是因为一两行代码 我每次创建 PHP 文件时 vim 都会将其视为 PHP 文件 因此 HTML 片段不可用 因此必须使用命令手动激活 HTML 片段 set
  • 在网站上创建网站图标的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Question 创建一个的最佳实践是什么favicon在网站上 并且是一个 ico同时包含 16x16 和 32x32 图像的文件比 png文件只有 16x16 今天首选的正确方法是否无
  • 实现Spring Data存储库的自定义方法并通过REST公开它们

    我正在尝试将自定义方法添加到我的 Spring 数据存储库PersonRepository如中所述1 3 Spring Data 存储库的自定义实现并通过 REST 公开这些方法 初始代码来自使用 REST 访问 JPA 数据示例 这里是添
  • com.sun.istack.SAXException2 :实例...正在替换“java.lang.Object”,但是...绑定到匿名类型

    我正在将项目从版本 1 x 升级到 jaxb 2 2 7 我的应用程序有时可以运行 但在一些回复中我看到了这一点 java lang RuntimeException javax xml bind MarshalException with
  • CompletableFuture——快速失败的聚合未来

    我一直在使用CompletableFuture allOf 帮助器创建聚合期货 只有当它们的组合期货被标记为完成时才会 完成 即 CompletableFuture future2 new CompletableFuture lt gt C
  • asp.net mvc app_data 文件夹

    我想在服务器图库上存储大量图像 我可以为此创建自己的文件夹 但在默认模板中有一个名为 App Data 的文件夹 显然 我认为模板的创建者是为了让我们在那里存储数据 但我找不到打开该文件夹中任何内容的方法 是故意的吗 或者我该怎么做 或者我
  • 使用 AudioQueue 读取音频缓冲区数据

    我正在尝试通过 AudioQueue 读取音频数据 当我这样做时 我可以验证文件的位深度是否为 16 位 但当我获取实际的样本数据时 我只看到从 128 到 128 的值 但我也看到可疑的交错数据 这让我非常确定我只是没有正确读取数据 首先
  • 从命令行将 MySQL 变量传递给脚本

    我有一个 MySQL 更新脚本 我想从命令行运行 但我希望能够将阶段域变量传递给脚本 我知道这行不通 但这是我描述我正在尝试做的事情的最佳方式 uroot hlocalhost mydatabase execute SET domain m
  • SimpleMembership、MVC4、AuthorizeAttribute 和角色

    我正在尝试向我的一些 MVC4 控制器添加授权属性 只要它是一个计划 它们就可以正常工作 Authorize or Authorize Users myuser 但是当我添加任何类型的角色过滤时 它就会崩溃 例如 Authorize Rol