0

我正在创建一个 asp.net mvc 4 应用程序来替换一套现有项目,包括一个 asp.net 3.5 网站和 windows 窗体。

我花了几个月的时间从头开始开发 asp.net mvc 4 应用程序,我一直专注于 windows 窗体应用程序。

我现在正在尝试集成 asp.net 3.5 网站....现在我只是想将网站添加到项目中。我一直在寻找如何做到这一点,并且我看到了我需要的大部分内容......但我有一些问题。

我正在使用区域。对于运营商区域(网站适用的地方),我添加了一个名为 aspnet 的文件夹……我已将网页和其他代码添加到此文件夹中……所有这些都可以编译。

我还通过添加以下行修改了 RoutConfig.Cs 文件: routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

当我将网页添加到项目中时,我只添加了代码,忽略了项目文件和 asp.net 网站的 web.config .....

我认为我根本不需要转换项目文件...但我想弄清楚如何处理 web.config....我知道我可以在 aspnet 文件夹中有一个 web.config ....但是要放入什么是我的问题.....

我尝试只复制现有文件,但它与不同的.net版本有问题(网站是v3.5,mvc应用程序是.net的v4.0)......

我最关心的是如何处理安全性……网站使用表单身份验证安全性,mvc 应用程序使用 simpleMembership。

我所做的所有阅读都集中在将 asp.net web 应用程序,而不是网站转换为 mvc 上……而且大多数人对 web.config 文件并没有多说……

我也没有找到如何处理安全性......我再次看到了一些关于将 MVC 的安全模型集成回现有的 asp.net Web 应用程序的事情,但没有关于如何让一个 asp.net 网站与mvc simplemembership。

帮助!!

4

1 回答 1

0

Web 表单和 MVC 都使用表单身份验证来确保安全。不同的是所使用的成员资格/角色提供者。Web 表单传统上使用默认的 ASP.NET 提供程序,而 MVC 现在使用 SimpleMembership 提供程序。以下是 web.config 中用于配置 SimpleMembership 提供程序的设置。

<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>
</system.web>

请注意,您配置表单身份验证的方式与 Web 表单相同。主要区别是将角色和成员资格提供者分别设置为SimpleRoleProviderSimpleMembershipProvider。您需要在引用中包含程序集 WebMatrix.WebData。SimpleMembership 首先使用 EF 代码,因此在应用程序启动时初始化数据库至关重要。阅读这篇关于播种和自定义 SimpleMembership的文章,它将为您提供一些关于如何在应用程序中处理数据库初始化的提示。有一个名为SimpleSecurity的开源项目它将 SimpleMembership 从应用程序中分离出来,这将使它更容易合并到您的项目中,并提供一个简单的方法调用来初始化它。你可以在这里阅读更多关于它的信息

于 2013-08-21T13:33:58.957 回答