小编er-*_*r-v的帖子

在运行时查找对象的引用

我有一个永生的物体.我删除了所有可以看到的引用,使用它之后,它仍然没有收集.它的生命周期非常复杂,所以我不能确定所有引用都已被清除.

if ( container.Controls.Count > 0 )
{ 
    var controls = new Control[ container.Controls.Count ];
    container.Controls.CopyTo( controls, 0 );

    foreach ( var control in controls ) 
    { 
         container.Controls.Remove( control );
         control.Dispose();
    }

    controls = null; 
}

GC.Collect();
GC.Collect(1);
GC.Collect(2);
GC.Collect(3);
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到它仍然有哪些参考?为什么不收集?

.net c# garbage-collection

21
推荐指数
2
解决办法
2万
查看次数

防止隐藏领域的变化

如果我的ChangePassword表单包含用户的隐藏ID字段,该怎么办?

BadPerson知道GoodPerson的ID.他用FireBug打开Change Password表单,将他的Id更改为GoodPerson的Id,因此GoodPerson的密码更改.

当然我可以创建一些防止这种情况的服务器逻辑,但我认为应该有一些开箱即用的解决方案,如果隐藏的字段被更改,我会不知道.

提前致谢.

编辑 确定,更改密码是一个糟糕的例子.我在隐藏字段中具有id的任何编辑表单都存在同样的问题.

forms security asp.net-mvc asp.net-mvc-2

9
推荐指数
2
解决办法
6599
查看次数

在剃刀mvc 4 rc中清空第一行

我已经从mvc 3迁移到mvc 4并遇到以下问题.

@using InvoiceDocflow.Controllers
@{
    Response.ContentType = "text/xml";
}
<?xml version="1.1" encoding="UTF-8" ?>
<dc>
    @foreach (var dcLink in (IEnumerable<DcLink>)ViewData["SupportedDcs"])
    {
        <link rel="@dcLink.RelUri.ToString()" href="@dcLink.DcUri.ToString()" />
    }
</dc>
Run Code Online (Sandbox Code Playgroud)

这是我的观点.我的布局只有一行

@RenderBody()
Run Code Online (Sandbox Code Playgroud)

所以在mvc 3 <?xml version="1.1" encoding="UTF-8" ?>出现在第一行,但现在,它出现在第二行,第一行留空.

在此输入图像描述

我可以在第一行渲染它,因为它在mvc 3中吗?

顺便说说.

@using InvoiceDocflow.Controllers
@{
    Response.ContentType = "text/xml";
}<?xml version="1.1" encoding="UTF-8" ?>
Run Code Online (Sandbox Code Playgroud)

这可行,但这不是我想做的事情.

razor asp.net-mvc-4

8
推荐指数
3
解决办法
4407
查看次数

C#模拟运算符中的sql

SQL中有运算符

SELECT * FROM MyTable WHERE id IN (1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)

在C#中是否有类似的sintax,我的意思是

if(variable in (1, 2, 3, 4, 5)){
}
Run Code Online (Sandbox Code Playgroud)

c#

7
推荐指数
2
解决办法
1021
查看次数

为什么model => model.Reason_ID转到model => Convert(model.Reason_ID)

我有自己的html助手扩展,我用这种方式

<%=Html.LocalizableLabelFor(model => model.Reason_ID, Register.PurchaseReason) %>
Run Code Online (Sandbox Code Playgroud)

宣称是这样的.

 public static MvcHtmlString LocalizableLabelFor<T>(this HtmlHelper<T> helper, Expression<Func<T, object>> expr, string captionValue) where T : class {
            return helper.LocalizableLabelFor(ExpressionHelper.GetExpressionText(expr), captionValue);
        }
Run Code Online (Sandbox Code Playgroud)

但是当我在调试器中打开它时,expr.Body.ToString()会显示Convert(model.Reason_ID).但应该是model.Reason_ID.这是一个很大的问题,因为ExpressionHelper.GetExpressionText(expr)返回空字符串.那是多么奇怪的魔力?我怎么能摆脱它?

lambda asp.net-mvc-2

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

处理程序在IIS7.5集成管道上返回404错误

<httpHandlers>
  <add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
  <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
  <remove verb="*" path="*.asmx" />
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)

我在集成模式下遇到了iis7.5的问题.当我在经典模式处理程序中使用它时,上面提到的工作正常,但如果我切换到集成管道 - 所有应该处理的请求返回404错误.为什么?

iis integrated-pipeline-mode

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

ASP.NET MVC:路由到URL

在MVC中获取URL(相对或绝对)的最简单方法是什么?我在这里看到了这个代码,但它似乎有点冗长,并没有枚举RouteTable.

例:

List<string> urlList = new List<string>();
urlList.Add(GetUrl(new { controller = "Help", action = "Edit" }));
urlList.Add(GetUrl(new { controller = "Help", action = "Create" }));
urlList.Add(GetUrl(new { controller = "About", action = "Company" }));
urlList.Add(GetUrl(new { controller = "About", action = "Management" }));
Run Code Online (Sandbox Code Playgroud)

附:

protected string GetUrl(object routeValues)
{
    RouteValueDictionary values = new RouteValueDictionary(routeValues);
    RequestContext context = new RequestContext(HttpContext, RouteData);

    string url = RouteTable.Routes.GetVirtualPath(context, values).VirtualPath;

    return new Uri(Request.Url, url).AbsoluteUri;
}
Run Code Online (Sandbox Code Playgroud)

检查RouteTable并获取给定控制器和操作的URL的更好方法是什么?

asp.net-mvc routes

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

什么是短语"HTTP.SYS中的URL保留"是什么意思?

无法理解这句话的意思.论坛上的人建议彼此在HTTP.sys中保留网址,但这是什么意思?它是为了什么?它是如何工作的?它全部来自HttpWebRequest uac问题.

c# http winhttp http.sys

3
推荐指数
1
解决办法
2409
查看次数

哪个关键字类可以在c#中使用?

我知道在c#中使用class关键字的2个地方.

  1. 在课堂申报中
  2. 在泛型约束中(类GenericClass,其中T:类)

但有什么我错过了吗?这对我来说很重要,因为我正在编写一个程序,它会计算文件中的类.在msdn或C#规范中找不到任何信息.

编辑

#if class
partial class C<T> where T : class
{
    // class!
    int @class = 123;
    string c = "class";
}
partial class C<T> where T : class {}
#else
partial class D {}
partial class D {}
partial class D {}
#endif
Run Code Online (Sandbox Code Playgroud)

这是几个答案的积累.

c#

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