小编LCJ*_*LCJ的帖子

了解WCF Windows身份验证

我有一个Windows身份验证服务.使用以下代码,我可以获得(通过使用客户端)消费该服务的用户的Windows标识.

String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
Run Code Online (Sandbox Code Playgroud)

服务器中的配置是:

<binding name="messageSecurity">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
Run Code Online (Sandbox Code Playgroud)

我还读到,在服务器中,它使用Kerberos来实现这一点.

现在,我试图了解它在我们企业网络中的重要性.在办公室中,用户将使用其活动目录凭据登录其桌面.我们的服务托管在名为"SERV1"的Windows服务器中.

  1. 只有访问(登录)"SERV1"的用户才能访问该服务吗?或者所有能够登录办公室网络的用户(起诉活动目录凭证)都可以使用该服务?

  2. 有没有办法确保只有CIO批准的应用程序才能访问该服务,将服务保持为Windows身份验证?

  3. 是否针对每个服务操作呼叫或仅针对第一个呼叫进行此身份验证检查?

  4. 有什么方法服务将能够知道用户的Windows凭据?

注意:据我所知,WindowsAuthentication可以与会员提供商进行比较 - 从集中位置提供用户名和密码.它可以与ASP.Net成员资格提供程序或Active Directory成员资格提供程序进行比较.

进一步阅读:

  1. ASP.NET Active Directory成员资格提供程序和SQL Profile Provider

  2. wcf数据合同授权

  3. http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel

.net c# asp.net wcf windows-authentication

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

将Querystring参数添加到GridView ItemTemplate

我在第一列中有一个带有超链接的gridview.单击超链接后,用户将重定向到Vendor.aspx.现在,我需要将消费者ID(被点击的行)作为查询字符串传递给Vendor.aspx.

实现它的最佳方法是什么?有没有办法只使用标记代码来处理它?

  <asp:GridView ID="grdConsumers" runat="server" AutoGenerateColumns="False" 
                EnableViewState="True" >
                <Columns>

                   <asp:TemplateField HeaderText="ConsumerID" SortExpression="ConsumerID" >
                    <ItemTemplate>
                        <asp:HyperLink ID="lnkConsumerID" href="Vendor.aspx" runat="server"><%# Eval("ConsumerID")%></asp:HyperLink>
                    </ItemTemplate>
                    </asp:TemplateField>



                    <asp:BoundField HeaderText="Status" DataField="Status" SortExpression="Status"></asp:BoundField>
                </Columns>
            </asp:GridView>
Run Code Online (Sandbox Code Playgroud)

相关阅读:

  1. 在用户控件(ASCX)中动态设置Gridview DataNavigateUrlFormatString

  2. 如何向DataNavigateUrlFormatString添加"&Source"?

  3. 使用JavaScript在GridView中选择行

  4. 当绑定值包含冒号时,如何绑定GridView HyperLinkField的URL?

  5. 来自DataSource的asp.net gridview DataNavigateUrlFormatString

.net javascript c# asp.net

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

使实体类关闭以进行更改

我有一个数据库关系,如下所示.域对象是基于LINQ to SQL ORM创建的.

付款包括现金付款和礼品券付款.假设购买总额为550.可以按以下组件支付

1 Gift Coupon Valued 300

1 Gift Coupon Valued 200

I Cash Currency Valued 50
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我正在使用ORM的"InsertOnSubmit"功能插入新的付款记录.以下代码工作正常.但是,如果我公司使用信用卡引入新的支付组件,我需要更改我的"付款"域类.如何使支付类打开以进行扩展并关闭仍在使用ORM的更改

注意:Payment类具有行为(例如GetTotalAmountCollected).我正在努力使"付款"类满足OCP.

注意:优惠券类型有特定的行为.优惠券发行日期是否小于2000年1月1日,它不应用于计算总金额(即,CouponValue应为零).请参阅使用策略模式重构代码.

注意:我使用的是.Net 4.0

参考:

  1. 将ObjectContext.AddObject与Entity Framework一起使用时出错
  2. 使用策略模式重构代码
  3. 喜欢构成而不是继承?
  4. 代码优先与模型/数据库优先
  5. 使用Unity的策略模式和依赖注入
  6. 委托与OOP的C#策略设计模式
  7. 如何在C#中使用策略模式?
  8. 继承与EF代码第一:第2部分-每个类型表(TPT) http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first -ctp5部分-2-表每类型tpt.aspx

C#代码:

public class PaymentAppService
{
    public RepositoryLayer.ILijosPaymentRepository Repository { get; set; }

    public void MakePayment()
    {
        DBML_Project.Payment paymentEntity = new DBML_Project.Payment();
        paymentEntity.PaymentID = 1;
        paymentEntity.PaymentType = "PurchaseP";

        DBML_Project.CashPayment cashObj = new …
Run Code Online (Sandbox Code Playgroud)

.net c# domain-driven-design entity-framework linq-to-sql

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

使用Composition为"is - a"关系的问题

我有为HR系统开发的系统.有会计员工和程序员员工.在加入公司的第一个月,员工没有任何角色.一名员工可以同时是会计师和程序员.我有一个由以下代码显示的设计.

现在,我需要通过实现新功能来增强系统:

终止所有会计师.(终止表示将员工的状态设置为IsActive = false).问题是我不能在没有检查的情况下将所有会计师直接设置为非活动状态.我需要检查一下他是否还有其他角色.

如何重新构造这些类以使终止函数更自然OO?

UPDATE

我正在寻找一个有@AlexDev答案的EF Database First解决方案模型和数据库架构的答案.

C#代码

List<Accountant> allAccountants =  Get All accountants from database

public class Employee
{
    public int EmpID { get; set; }
    public DateTime JoinedDate { get; set; }
    public int Salary { get; set; }
    public bool IsActive { get; set; }
}


public class Accountant : Employee
{
    public Employee EmployeeData { get; set; }
}

public class Programmer : Employee
{
    public Employee EmployeeData { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

c# oop ooad domain-driven-design solid-principles

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

是否使用Page_IsValid或Page_ClientValidate()(用于客户端事件)

我在按钮单击处理程序中有以下代码.这两种方法都很好.将Page_ClientValidate()导致一个额外的验证检查,并做处理而Page_IsValid利用现有的财产.

质询

  1. 如果点击按钮,是否始终保证Page_IsValid在那个时间计算?如果不能保证,我们需要Page_ClientValidate()明确调用.
  2. Page_IsValid设定之前发生的事件是什么?对于此类事件,我们不应该依赖Page_IsValid

UPDATE

是否确保仅在验证部分完成后调用按钮单击事件处理程序(在JavaScript中)(即,在作为验证的一部分调用Page_ClientValidate()之后)?如果可以肯定,我可以依赖Page_IsValid吗?

脚本

  $('#btnSave').click(function (e) {

  //Aproach 1
  var isValid = Page_ClientValidate('');
  if (isValid) 
  {
       //Do reamining work
  }

  //Aproach 2
  if (Page_IsValid)
  {
      //Do reamining work
  }

  });
Run Code Online (Sandbox Code Playgroud)

参考文献:

  1. 隐藏ASP.Net ValidationSummary中的冗余错误消息
  2. 验证器导致双击检查的不正确行为
  3. 未定义Page_ClientValidate
  4. Page_ClientValidate多次验证.
  5. MSDN - 深度ASP.NET验证

asp.net

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

在SQL查询中使用REPLACE获取换行符/回车符

我有一个名为Account Type的数据库,其中包含回车符和换行符(CHAR(10)和CHAR(13)).

当我搜索这个值时,我需要执行REPLACE如下所示的操作.以下代码工作正常.

SELECT AccountNumber,AccountType, 
  REPLACE(REPLACE(AccountType,CHAR(10),'Y'),CHAR(13),'X') FormattedText 
FROM Account 
WHERE AccountNumber=200
AND REPLACE(REPLACE(AccountType,CHAR(10),' '),CHAR(13),' ') LIKE 
'%Daily Tax Updates:  -----------------        Transactions%'
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 需要这样的替换的其他字符(类似于CHAR(10)和CHAR(13))是什么?

注意:列的数据类型是VARCHAR.

注意:查询是从SQL Server Management Studio运行的

在此输入图像描述

sql sql-server

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

从存储过程结果创建对象

我们有一个现有的SQL Server存储过程以及以下查询.我们需要Student从查询结果中创建以下类设计中的对象集合.

SqlDataReader使用中创建对象的最佳方法是什么LINQ

注意:我SqlDataReader只使用; 没有ORM

询问

SELECT 
    S.StudentID, S.StudentName, E.ExamID, E.ExamName, SE.Mark 
FROM 
    StudentExam SE
INNER JOIN 
    Student S ON S.StudentID = SE.StudentID
INNER JOIN 
    Exam E ON E.ExamID = SE.ExamID 
Run Code Online (Sandbox Code Playgroud)

public class ExamMark
{
    public int ExamID { get; set; }
    public string ExamName { get; set; }
    public int Mark { get; set; }
}

public class Student
{
    public int StudentID { get; set; }
    public string StudentName …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server stored-procedures

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

使用通用代表

我们知道"Action,Func和Predicate是预定义的通用委托.因此,作为委托,他们可以指向具有指定签名的函数."

我有以下数据访问方案,其中Func<T,R>有助于avoiding a foreach loop调用方法.方法2没有循环.这Func<T,R>有助于避免循环.

泛型委托的其他方案是什么,它可以节省大量的代码行?

参考

  1. 动态编写表达式谓词
  2. 高级C#
  3. C#/.NET Little Wonders:谓词,比较和转换器通用代表
  4. Func vs. Action vs. Predicate
  5. 什么是Func,它是如何以及何时使用的
  6. 如何使用泛型类型参数传入func?

方法1

public class MyCommonDAL
{

    public static IEnumerable<IDataRecord> ExecuteQueryWithTextCommandType(string commandText, List<SqlParameter> commandParameters)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand command = new SqlCommand())
            {
                command.Connection = connection;
                command.CommandType = CommandType.Text;
                command.CommandText = commandText;
                command.CommandTimeout = 0;
                command.Parameters.AddRange(commandParameters.ToArray());

                connection.Open();
                using (var rdr = command.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        yield return rdr;
                    } …
Run Code Online (Sandbox Code Playgroud)

c# generics ado.net

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

日期关联的优化不会改变计划

我有下表中的报告要求.我使用这些表创建了一个新数据库,并从实时数据库导入数据以进行报告.

报表参数是日期范围.我阅读了以下内容,发现DATE_CORRELATION_OPTIMIZATION可以通过使用seek而不是scan来更快地使查询工作.我做了必要的设置 - 仍然是查询使用相同的旧计划和相同的执行时间.需要进行哪些其他更改才能使查询使用日期关联?

注意:我使用的是SQL Server 2005

参考

  1. 优化访问相关日期时间列的查询
  2. 查询优化程序:日期关联优化

SQL

--Database change made for date correlation
ALTER DATABASE BISourcingTest
   SET DATE_CORRELATION_OPTIMIZATION ON;
GO

--Settings made
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET NUMERIC_ROUNDABORT OFF
GO

--Test Setting
IF (  (sessionproperty('ANSI_NULLS') = 1) AND
      (sessionproperty('ANSI_PADDING') = 1) AND 
      (sessionproperty('ANSI_WARNINGS') = 1) AND 
      (sessionproperty('ARITHABORT') = 1) AND 
      (sessionproperty('CONCAT_NULL_YIELDS_NULL') = 1) AND 
      (sessionproperty('QUOTED_IDENTIFIER') = 1) AND 
      (sessionproperty('NUMERIC_ROUNDABORT') = …
Run Code Online (Sandbox Code Playgroud)

sql-server optimization sql-server-2005

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

以预定义的顺序初始化"jQuery UI可排序列表"

我有一个使用jQuery UI排序的列表.第一个列表项是"项目1",第二个是"项目2".我的要求是必须根据存储在数组"arrValuesForOrder"中的顺序初始化列表项.我们如何初始化它呢?

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.4.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script>

<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.13/themes/sunny/jquery-ui.css"
rel="stylesheet" type="text/css" />

<script type="text/javascript">


    $(document).ready(function () 
    {

        var arrValuesForOrder = ["3", "1", "4", "2"];

        $("#myUnorderedList").sortable({
                                    axis:'y',
                                    handle: '.handle',
                                    update: function () 
                                            {
                                                var order = $('#myUnorderedList').sortable('serialize');
                                                alert(order);
                                            }
        });
    }); 
</script>

<style>

#myUnorderedList li img.handle 
{
margin-right: 20px;
cursor: move;
}

#myUnorderedList li 
{
display: block;
margin-bottom: 3px;
height:30px;
background-color: #efefef;
}

</style>


</head>

<body>

<div>


<ul id="myUnorderedList"> 

  <li id="listItem_1"> 
    <img src="images/arrow.png" alt="move"  class="handle" /> 
    <strong>Item 1</strong> 
  </li> 

  <li …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-ui

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