迁移Asp.Net配置文件提供程序以在MVC中工作(扩展不工作)

时间:2015-02-17 18:12:34

标签: c# asp.net .net asp.net-mvc asp.net-membership

我正在尝试将Asp.Net Web表单网站更新为使用MVC 5.有一个购物车组件可以扩展配置文件提供程序。位于web.config中的此xml似乎在旧网站项目中自动生成代码,该项目提供购物车属性但在mvc版本中不执行任何操作:

   <!-- Profile provider -->
    <profile defaultProvider="SQLProfileProvider">
      <providers>
        <clear/>
        <add name="SQLProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </providers>
      <properties>
        <!-- Define our shopping cart which is contained in customerManager and serialized as binary -->
        <add name="ShoppingCart" allowAnonymous="true" type="customerManager.ShoppingCart, customerManager" serializeAs="Binary"></add>
      </properties>
    </profile>

因此以下代码失败:

Profile.ShoppingCart.AddItem(1500);

错误3'System.Web.Profile.ProfileBase'不包含'ShoppingCart'的定义,并且没有扩展方法'ShoppingCart'接受'System.Web.Profile.ProfileBase'类型的第一个参数可能是发现(您是否缺少using指令或程序集引用?)D:\ VirtualWeb2 \ VirtualWeb2 \ Controllers \ AccountController.cs 92 29 VirtualWeb2

购物车的原始代码是独立的DLL,但如果我真的需要,我可以访问源代码。如果可能的话,我更愿意通过配置来处理它。

我在网上看过很多帖子,找不到涵盖同一场景的任何内容。 知道为什么这个“ShoppingCart”属性在构建mvc项目时不能自动生成但在asp网络表单网站中工作?

1 个答案:

答案 0 :(得分:1)

KingOfHypocrites回答(来自评论):

public static ShoppingCart GetCart(this Controller c) 
{ 
    var cart = c.Profile["ShoppingCart"]; 
    return (customerManager.ShoppingCart)cart; 
}