我正在尝试将图像和样式表从用户控件移动到程序集中的嵌入资源.我使用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&t=635133745137507721" id="ph1_image1">
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中导航到该URL,则会收到404,无法找到该资源.我究竟做错了什么?
编辑: 必须有一些基本的我不理解和/或我正在做一些非常愚蠢的事情.这是一个简单的VS 2010示例.我已经遵循了所有必要的步骤,我知道嵌入JScript1.js并通过WebResource.axd访问它,但它得到了错误.
我正在使用"MM/dd/yy"更新一些将日期格式化为字符串的代码.我需要它是文化意识,但希望保持两位数的年份,以保持日期短.以下是我提出的建议,但还有更好的方法吗?
string dateFormat = culture_Info.DateTimeFormat.ShortDatePattern.Replace("yyyy", "yy");
Run Code Online (Sandbox Code Playgroud) 我有一个使用的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从哪里获取它的哈希键?
System.ServiceModel.Clientbase.Open()做什么?我从来没有使用它,但只是在一些代码中遇到它.可以抛出异常吗?如果没有调用Close()是一个问题吗?
我最近开始遇到我的项目需要特定版本的引用程序集的问题,即使引用在我的Visual Studio项目中标记为Specific Version = False.例如,我将使用MyAssembly 1.0.1.0替换MyAssembly.dll版本1.0.0.0,并且引用MyAssembly.dll的应用程序将收到错误消息,指出无法找到版本1.0.0.0.特定版本属性似乎不起作用.这是一个巨大的痛苦,因为我必须重建和重新部署引用程序集的每个应用程序,即使新版本中没有重大更改.我知道在过去,如果这是假的,它将使用任何版本,如果发现不止一个版本,它将使用最新版本.有谁知道问题是什么?
编辑:这已经打开,暂时没有回复.问题不清楚吗?我想知道的是,有没有办法更新我的.NET应用程序依赖于新版本的程序集而不重建我的.NET应用程序.
我有一个WPF应用程序,我们已将信用卡处理集成到.我们目前正在将信用信息刷入/输入到WPF Web浏览器的网页中,以满足PCI合规性要求.显然这是可以的,因为Web浏览器组件符合PCI标准,我们的代码从不处理信用卡信息.
我非常讨厌这种设计,并且很乐意编写一个独立的,PCI兼容的WPF控件/程序集,我们可以插入而不是Web浏览器组件.如果我们的应用程序的代码可以使用浏览器而不经过PCI认证,那么它可以使用我们自己的PCI认证组件,而且它本身是PCI认证的吗?它所做的所有新控制/组装都是收集卡信息,并通过WCF服务安全地将其发送到远程安全服务器.它不会存储信用卡或在本地进行任何处理.我被告知这样做需要9个月的审核流程,这就是我们采用浏览器方法的原因.
有人可以让我大致了解这需要做些什么吗?
我有一个DataGrid,其中每行包含ItemsControl.因此,网格的行可以非常高.如果一行高于网格的高度,我无法滚动查看行的其余部分,因为DataGrid会自动滚动到下一行.也就是说,如果我正在查看第1行的上半部分并单击垂直滚动条的向下箭头,它会跳到第2行的顶部.它不会让我看到第1行的下半部分.我如何制作DataGrid是否可以平滑地滚动行而不是逐行步进?
我有一个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应用程序正在运行的帐户,但不知道如何验证.在其他情况下,我认为我已经看到客户端凭据没有隐式默认值.
所以我有两个问题:
当尝试在 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) 我正在基于实体框架的应用程序中的共享数据库中隔离存储数据。我想使用 SQL Server 2016 行级安全性,但我更希望我的数据库连接都使用单个用户。因此,我想将 SQL Server CONTEXT_INFO设置为所有实体框架查询的商店编号。然后RLS 可以确定该行是否属于设置为CONTEXT_INFO 的商店编号。
我完成此操作的唯一想法是更新我的 DbContext 构造函数以创建连接本身并在将连接传递给基本构造函数之前执行 SET CONTEXT_INFO 语句。我想我可以在我的 DbContext 的部分类中添加一个构造函数重载来做到这一点,或者修改 t4 模板以这样生成原始构造函数。
EF 是否提供了更好的方法来做到这一点?我首先使用数据库。
c# ×6
asp.net ×3
wpf ×3
wcf ×2
.net ×1
asp.net-3.5 ×1
assemblies ×1
credit-card ×1
datagrid ×1
dll ×1
hash ×1
localization ×1
reference ×1
security ×1
sql-server ×1
version ×1
wpfdatagrid ×1
xaml ×1