小编xr2*_*0xr的帖子

无法访问asp.net中的嵌入式资源

我正在尝试将图像和样式表从用户控件移动到程序集中的嵌入资源.我使用Reflector看到图像和.css文件嵌入在程序集中,但是当我尝试使用ClientScript.GetWebResourceUrl()创建的URL访问它们时,找不到该资源.我很难过.

程序集默认命名空

TestWebApp
Run Code Online (Sandbox Code Playgroud)

文件的路径(标记为BuildAction:Embedded Resource)是

TestWebApp/Resources/CSS/PaymentHistory.css
TestWebApp/Resources/Images/loading.gif
Run Code Online (Sandbox Code Playgroud)

所以我的资源注册为:

[assembly: WebResource("TestWebApp.Resources.CSS.PaymentHistory.css", "text/css", PerformSubstitution = true)]
[assembly: WebResource("TestWebApp.Resources.Images.loading.gif", "image/gif")]
Run Code Online (Sandbox Code Playgroud)

访问资源的用户控件(在同一程序集中):

TestWebApp.UserControls.PaymentHistory
Run Code Online (Sandbox Code Playgroud)

为了简化,我目前只是尝试引用图像而不是样式表.在我的用户控件的Page_Load中,我将Image控件的ImageUrl设置为资源URL:

image1.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "TestWebApp.Resources.Images.loading.gif");
Run Code Online (Sandbox Code Playgroud)

在运行时,一切看起来都没有错误,但它会渲染出损坏的图像.这是渲染的图像源:

<img style="border-width:0px;" src="/WebResource.axd?d=8fC_1tLPjrUCxmFc_Q2MKY0-pHAak-sTWkpLLV3D56H_c08LujXC63ia2PNICE65_i-Q4JqprAigLpbrXG-rIAr6ePO4HHcdQKgdd3szlThv2gizxOJLJsPRNe-b_M6ApTwPsH_5oZAuONTN0cumOTRr1nA1&amp;t=635133745137507721" id="ph1_image1">
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中导航到该URL,则会收到404,无法找到该资源.我究竟做错了什么?

编辑: 必须有一些基本的我不理解和/或我正在做一些非常愚蠢的事情.这是一个简单的VS 2010示例.我已经遵循了所有必要的步骤,我知道嵌入JScript1.js并通过WebResource.axd访问它,但它得到了错误.

c# asp.net asp.net-3.5 embedded-resource

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

在C#中获取具有2位数年份的特定于文化的日期

我正在使用"MM/dd/yy"更新一些将日期格式化为字符串的代码.我需要它是文化意识,但希望保持两位数的年份,以保持日期短.以下是我提出的建议,但还有更好的方法吗?

string dateFormat = culture_Info.DateTimeFormat.ShortDatePattern.Replace("yyyy", "yy");
Run Code Online (Sandbox Code Playgroud)

.net c# globalization localization datetime-format

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

ASP.NET成员资格HashAlgorithmType默认为HMACSHA256,密码哈希键是否也是如此?

我有一个使用的ASP.NET 4.5 Web应用程序SqlMembershipProvider.在开发期间,有人放入passwordFormat="Clear"配置,导致密码以明文保存.我想删除它并启用密码哈希,但我想确保不使用机器特定的或自动生成的密钥生成哈希.

根据我在所有相关问答中所读到的内容,密码只需使用直接SHA256进行哈希处理,而不是机器特定或键控.但是,当我在运行时检查Membership.HashAlgorithmType时,其值为"HMACSHA256",并且.NET HMACSHA256需要一个键(因为它是HMAC)并随机生成一个(如果没有提供给构造函数).所以似乎必须要有一把钥匙.会员密码哈希键是否也是键入的?如果是,我如何跨机器使用相同的密钥?将非常感谢支持您答案的文档或证据.

编辑

根据这个关于"保护成员身份"的MSDN页面,machineKey元素确实控制了哈希键:

强烈建议您使用设置为Hashed或Encrypted的passwordFormat属性加密成员资格数据源中的用户密码,其中Hashed是最安全的格式.指定加密算法的加密密钥值存储在machineKey配置元素中.

但是,我尝试在web.config中设置机器密钥验证密钥,它仍然生成与设置之前相同的密码哈希,因此它似乎没有任何效果.

我一直在查看SqlMembershipProvider源代码,据我所知,它确实使用了键控哈希.当然,这是.Net 4.6.1的来源,我正在运行4.5.我已经复制了EncodePassword源代码并对其进行了修改,因此它可以在控制台应用程序中运行,在我的控制台应用程序中,我仍然获得与MembershipProvider结果(在同一台机器上)相同的密码和盐值的哈希值.

如果它使用随机密钥,您将无法验证密码.那么SqlMembershipProvider从哪里获取它的哈希键?

c# asp.net hash asp.net-membership

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

System.ServiceModel.Clientbase.Open()做什么?

System.ServiceModel.Clientbase.Open()做什么?我从来没有使用它,但只是在一些代码中遇到它.可以抛出异常吗?如果没有调用Close()是一个问题吗?

c# wcf

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

特定版本为False时特定于版本的程序集引用

我最近开始遇到我的项目需要特定版本的引用程序集的问题,即使引用在我的Visual Studio项目中标记为Specific Version = False.例如,我将使用MyAssembly 1.0.1.0替换MyAssembly.dll版本1.0.0.0,并且引用MyAssembly.dll的应用程序将收到错误消息,指出无法找到版本1.0.0.0.特定版本属性似乎不起作用.这是一个巨大的痛苦,因为我必须重建和重新部署引用程序集的每个应用程序,即使新版本中没有重大更改.我知道在过去,如果这是假的,它将使用任何版本,如果发现不止一个版本,它将使用最新版本.有谁知道问题是什么?

编辑:这已经打开,暂时没有回复.问题不清楚吗?我想知道的是,有没有办法更新我的.NET应用程序依赖于新版本的程序集而不重建我的.NET应用程序.

dll assemblies reference version visual-studio

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

编写PCI兼容组件需要什么?

我有一个WPF应用程序,我们已将信用卡处理集成到.我们目前正在将信用信息刷入/输入到WPF Web浏览器的网页中,以满足PCI合规性要求.显然这是可以的,因为Web浏览器组件符合PCI标准,我们的代码从不处理信用卡信息.

我非常讨厌这种设计,并且很乐意编写一个独立的,PCI兼容的WPF控件/程序集,我们可以插入而不是Web浏览器组件.如果我们的应用程序的代码可以使用浏览器而不经过PCI认证,那么它可以使用我们自己的PCI认证组件,而且它本身是PCI认证的吗?它所做的所有新控制/组装都是收集卡信息,并通过WCF服务安全地将其发送到远程安全服务器.它不会存储信用卡或在本地进行任何处理.我被告知这样做需要9个月的审核流程,这就是我们采用浏览器方法的原因.

有人可以让我大致了解这需要做些什么吗?

  • 它可以用C#/ WPF编写吗?
  • 代码是否必须实施特殊的安全措施(如CAS)?
  • 组件是否必须混淆?
  • 一旦写完,那你需要做什么?

c# security wpf credit-card pci-compliance

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

防止DataGrid滚动从捕捉到行

我有一个DataGrid,其中每行包含ItemsControl.因此,网格的行可以非常高.如果一行高于网格的高度,我无法滚动查看行的其余部分,因为DataGrid会自动滚动到下一行.也就是说,如果我正在查看第1行的上半部分并单击垂直滚动条的向下箭头,它会跳到第2行的顶部.它不会让我看到第1行的下半部分.我如何制作DataGrid是否可以平滑地滚动行而不是逐行步进?

wpf wpfdatagrid

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

如果没有显式设置凭据,WCF Windows身份验证如何工作

我有一个asp.net Web应用程序,可以调用多个WCF服务.该网络应用程序位于www.mydomain.com,服务位于services.mydomain.com.它们来自同一台服务器.

我刚刚将安全端点(bassicHttpBindings)添加到使用传输安全性(https)和Windows身份验证的服务中:

<binding name="WindowsSecuredBinding">
  <security mode="Transport">
    <transport clientCredentialType="Windows" />
  </security>
</binding>
Run Code Online (Sandbox Code Playgroud)

并配置客户端Web应用程序以使用这些新的安全端点.我期待下一步是在Web应用程序中编写一些代码来设置客户端凭据以通过Windows身份验证.令我惊讶的是,服务调用正在成功而不设置客户端凭据.我假设它必须发送Web应用程序正在运行的帐户,但不知道如何验证.在其他情况下,我认为我已经看到客户端凭据没有隐式默认值.

所以我有两个问题:

  1. 身份验证如何成功?它是否向用户运行应用程序运行,浏览器用户的凭据,没有凭据?
  2. 如何调试/记录/跟踪身份验证过程?我想至少看到正在验证的用户名,以便我可以验证安全性.

asp.net wcf windows-authentication

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

滚动 DataGrid 时出现 InvalidOperationException:绑定表达式已属于 BindingGroup

当尝试在 DataGrid 上向下滚动时,我收到 InvalidOperationException,指出“绑定表达式已经属于 BindingGroup;无法将其添加到不同的 BindingGroup”。我不知道正在使用任何 BindingGroups,所以我不太确定它在说什么。我已将其范围缩小到仅在下面的列中发生。我怀疑这也与虚拟化有关。有任何想法吗?

这是 DataGrid 标记:

<DataGrid x:Name="dgStudentSNP" 
              AutoGenerateColumns="False"

              Grid.Row="1" Margin="6,10" 
              HorizontalAlignment="Stretch"
              HeadersVisibility="Column"
              CanUserSortColumns="True"
              CanUserAddRows="False"
              CanUserResizeColumns="True"
              CanUserDeleteRows="False"
              BorderThickness="1"
              SelectedValuePath="SNPEnrollmentID" VerticalScrollBarVisibility="Auto" VerticalAlignment="Top" Height="Auto" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Student Name" MinWidth="120">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock>
                                    <Hyperlink Click="GetStudentFamily" >
                                        <Run>
                                            <Run.Text >
                                                <MultiBinding StringFormat="{}{0} {1}">
                                                    <Binding Path="FirstName"/>
                                                    <Binding Path="LastName" />
                                                </MultiBinding>
                                            </Run.Text>                                                              
                                        </Run>
                                    </Hyperlink>
                            </TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
              </DataGrid.Columns>
            </DataGrid>
Run Code Online (Sandbox Code Playgroud)

这是异常的堆栈跟踪:

Stack Trace :    at System.Windows.Data.BindingExpressionBase.JoinBindingGroup(BindingGroup bg, Boolean explicitJoin)
   at System.Windows.Data.BindingExpressionBase.RejoinBindingGroup(Boolean isReflective, DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.OnDataContextChanged(DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid

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

如何在实体框架连接上设置 CONTEXT_INFO

我正在基于实体框架的应用程序中的共享数据库中隔离存储数据。我想使用 SQL Server 2016 行级安全性,但我更希望我的数据库连接都使用单个用户。因此,我想将 SQL Server CONTEXT_INFO设置为所有实体框架查询的商店编号。然后RLS 可以确定该行是否属于设置为CONTEXT_INFO 的商店编号。

我完成此操作的唯一想法是更新我的 DbContext 构造函数以创建连接本身并在将连接传递给基本构造函数之前执行 SET CONTEXT_INFO 语句。我想我可以在我的 DbContext 的部分类中添加一个构造函数重载来做到这一点,或者修改 t4 模板以这样生成原始构造函数。

EF 是否提供了更好的方法来做到这一点?我首先使用数据库。

sql-server entity-framework

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