小编Mat*_*s F的帖子

使用类型化视图时如何在ActionFilterAttribute中设置模型数据

我使用强类型视图,其中所有ViewModel都继承了一个类BaseViewModel.

在装饰所有控制器的ActionFilter中,我想使用Model.

现在我只能像这样访问它:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        ViewModelBase model = (ViewModelBase)filterContext.ActionParameters["viewModel"];
        base.OnActionExecuting(filterContext);
   }
Run Code Online (Sandbox Code Playgroud)

问题是,我必须知道密钥"viewModel".关键是viewModel,因为在我的控制器中我用过:

返回视图("MyView",viewModel)

是否有更安全的方式来访问模型?

asp.net-mvc

7
推荐指数
1
解决办法
3916
查看次数

不同的用户获得相同的cookie - 值为.ASPXANONYMOUS

我的网站允许匿名用户.我看到,在负载过重的情况下,匿名用户有时会获得其他用户的个人资料值.

我首先删除我的cookie并在cookie值中获得有效的唯一值.ASPXANONYMOUS.在几个请求之后,我得到了另一个用户已经使用的.ASPXANONYMOUS的新值.我在loggs中看到,总有几个用户在.ASPXANONYMOUS中共享相同的值.

我可以在我的日志中看到2个或更多用户真正获得.ASPXANONYMOUS相同的cookie值,即使他们有不同的IP.

这是htttp流量.在第二个图像中显示更改cookie(您必须显示图像的完整大小才能读取日志):

其中一项工作正常:

替代文字http://img413.imageshack.us/img413/2711/log1.gif

然后有一个请求更改cookie 替换文本http://img704.imageshack.us/img704/8175/log2.gif

然后使用新的cookie

alt text http://img704.imageshack.us/img704/3818/log3.gif

为了安全起见,我删除了依赖注入.我不使用OutputCaching.

我的web.config具有以下身份验证设置:

 <anonymousIdentification enabled="true" cookieless="UseCookies" cookieName=".ASPXANONYMOUS" 
      cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" />

  <authentication mode="Forms">
        <forms loginUrl="~/de/Account/Login" />
    </authentication>
Run Code Online (Sandbox Code Playgroud)

有没有人知道我还能记录什么或者我应该看看什么?

UPDATE

我现在看到我展示的http流量完全有效..ASPXANONYMOUS中的值发生变化是因为cookie被刷新.该值包含AnonymousID和时间戳.

这不会导致用户在正常情况下具有相同的.ASPXANONYMOUS值.

问题是,无论何时从AnonymousIdentificationModule设置cokies,那么有可能有几个用户获得此cookie.在我的应用程序中设置cookie并没有这个奇怪的副作用.

asp.net asp.net-mvc forms-authentication anonymousidentification

7
推荐指数
1
解决办法
3681
查看次数

如何在ASP.NET MVC中对ActionFilter进行单元测试?

ActionFilter我的控制器级有一个.OnActionExecuting在Web应用程序中调用控制器的操作时,将调用该方法.

现在我Action在一个UnitTest中调用:

    NiceController niceController = new NiceController();
    ActionResult result = niceController.WhateverAction();
Run Code Online (Sandbox Code Playgroud)

有没有办法让ActionFilter调用?

asp.net-mvc unit-testing

6
推荐指数
1
解决办法
2690
查看次数

使用Html.BeginForm发布到当前控制器

我有一个部分用于几个视图.部分包含表格.表单提交时的操作总是相同,但包含操作的控制器取决于视图.

假设我有控制器,每个控制器都有一个动作ActOnChoosenPerson:

FireStaffController

HireStaffController

我偏爱

PersonList.ascx

表单呈现为

Html.BeginForm("FireStaffController","ActOnChoosenPerson")或

Html.BeginForm("HireStaffController","ActOnChoosenPerson")

什么是摆脱控制器参数的好方法?现在我将当前控制器的名称传递给模型并使用

Html.BeginForm(Model.CurrentController,"ActOnChoosenPerson")

但这有点尴尬.

asp.net-mvc

6
推荐指数
2
解决办法
6646
查看次数

PDC 2009视频是否已发布?

去年他们有http://channel9.msdn.com/pdc2008/但我没看到http://channel9.msdn.com/pdc2009/.他们计划今年发布视频吗?

编辑:

在发布分组会议的大约24小时内,他们将在http://microsoftpdc.com发布会话中的媒体

EDIT1:还没有太多改变,但他们有链接到网站http://microsoftpdc.com/Videos上的视频

EDIT2:

周末得救了.视频在线访问http://microsoftpdc.com/Videos.我喜欢这个小提琴表演.

video

6
推荐指数
1
解决办法
935
查看次数

试图分离附加数据库 - 之后无法访问数据库

我尝试执行以下操作:

  • 分离数据库

  • 将文件复制到临时文件夹

  • 再次附加数据库

这是第一次工作,但是当我尝试从同一个进程第二次运行此方法时,我得到一个错误.我总是可以访问从其他客户端再次附加的数据库,但不能从我的应用程序中访问.

错误是:

"尝试将请求发送到服务器时传输级别错误.(提供程序:共享内存提供程序,错误:0 - 管道另一端没有进程.)",当我尝试从sys.database_files读取数据时新附加的数据库.

该错误是从德语"FehleraufÜbertragungsebenebeimSenden der Anforderung an den Server"翻译而来的.

它发生在"cmdGetDBFileName.ExecuteReader"之后.我仍然可以打开连接,但查询sys.database_files failes.

源代码很长,但我想你可以在开始时跳过这部分,我将db的文件名分离.你看到我的错误或有任何想法我可以检查吗?

public bool DetachB2CPrepare()
        {
            _log.Debug("DetachB2CPrepare");
            SqlConnection prepareDBConnection = null;
            SqlConnection prepareMasterDBConnection = null;
            SqlDataReader readerDbFiles = null;

            bool result = true;
            try
            {
                //rc_b2c_product_prepare.mdf    
                string prepareDBPysicalFileName = "";
                //rc_b2c_product_prepare    
                string prepareDBFileName = "";
                //D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\rc_b2c_product_prepare.mdf
                string prepareDBFileNameComplete = "";

                //rc_b2c_product_prepare_1.ldf  
                string prepareTransactionLogPhysicalFileName = "";
                //rc_b2c_product_prepare_log    
                string prepareTransactionLogFileName = "";
                //D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\rc_b2c_product_prepare_1.ldf
                string prepareTransactionLogFileNameComplete = "";
                _log.DebugFormat("Try to open …
Run Code Online (Sandbox Code Playgroud)

c# ado.net sql-server-2008

5
推荐指数
1
解决办法
1381
查看次数

在IIS7上部署MVC应用程序的最佳实践

我不是网络管理员,我是IIS的新手.所以,我正在寻求建议.

我的MVC应用程序(例如fooapp)是我网站的默认应用程序(例如foo.bar).我使用IIS管理器将站点添加到IIS7.当我导入应用程序时,IIS管理器希望将它放在它自己的目录(/ foo)中,并告诉我不应该将它放在基本(站点)目录中.这意味着要进入我的默认MVC视图,我必须输入URL http://foo.bar/fooapp/.不用说,我想通过它到达那里http://foo.bar/

我看到两种可能的解决方案

  1. 将默认页面添加到重定向到MVC应用程序的站点目录.
  2. 忽略IIS警告并将应用程序加载到站点目录中.

我的IIS7知识有限.我玩过一些选项(比如HTTP Redirect).由于没有任何改变,我显然不明白我在做什么.

无论如何,如果有一些被认为是"最佳实践"和/或其他建议,请告诉我.

deployment asp.net-mvc iis-7 msdeploy

5
推荐指数
1
解决办法
2141
查看次数

TSQL性能与@@错误并且可以替换吗?

我继承了看起来像这样的代码:

存储过程UpdateSomeStuff

Update Table1 Set Col1=Para@1

IF @@Error > 0 Goto ERR

Update Table2 Set Col1=Para@2

IF @@Error > 0 Goto ERR

RETURN 0

ERR:

return  -1;
Run Code Online (Sandbox Code Playgroud)

这个sp由ADO.NET在c#中调用,就像这样

try
{
    myCommand.ExecuteNonQuery();
}
catch (System.Exception ex)
{
    _log.Error(ex);
    throw();
}
finally
{
    if(myConnection!=null)
    {
            myConnection.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是问自己:部分是IF @@错误> 0转到ERR有什么好处?如果发生错误,则无论如何都会返回sp,并且会在调用方法中捕获异常.

调用代码不处理返回值0和-1.我的计划是删除存储过程中的所有错误处理,并获得相同的结果.我是对的还是我错过了什么?

c# t-sql ado.net sql-server-2008

5
推荐指数
2
解决办法
96
查看次数

在Action Filter中存储的实例状态不正确

我刚刚将我的项目从ASP.NET MVC1.0升级到ASP.NET MVC4.0

令我真正害怕的一件事就是MVC3.0升级文档中的以下句子

在以前版本的ASP.NET MVC中,除少数情况外,每个请求都会创建操作过滤器.这种行为从来都不是保证行为,而只是一个实现细节,而过滤器的合同是将它们视为无状态.在ASP.NET MVC 3中,过滤器被更积极地缓存.因此,任何不正确地存储实例状态的自定义操作过滤器都可能被破坏.

我认为没有简单的方法来测试由不正确存储的实例状态引起的错误.如果我有一个问题,我非常有信心,我只能在生产中找到它.

不正确存储的实例状态真正意味着什么?

我有这个代码:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
   ProductModel productModel = new ProductModel()
   filterContext.ActionParameters["model"] = productModel;
}
Run Code Online (Sandbox Code Playgroud)

这是不正确存储的实例状态的示例吗?

asp.net-mvc action-filter asp.net-mvc-3

4
推荐指数
1
解决办法
505
查看次数

是否可以在浏览器堆栈中设置时区?

我找到了硒测试的东西,但我没有看到手动浏览的东西。看起来总是使用格林威治标准时间。

我正在寻找一种使用特定时区测试我的本地站点的方法。为机器设置时区也会更改我的本地网络服务器(Windows 上的 iis)的时区,这不是我想要的。

我知道我可以为 firefox 设置时间偏移,但这也不是我的首选方式,因为它确实设置了偏移,而不是夏令时具有不同行为的时区。

date browserstack

4
推荐指数
1
解决办法
3702
查看次数