我编写了一个Windows服务,它在本地计算机的端口8003上打开了一个WCF服务.或者至少,它应该是.由于着名的例外,该服务无法启动:
System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:8003/TRConfigurationService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).
Run Code Online (Sandbox Code Playgroud)
这个问题解决在这里,有一个非常简单的答案:运行管理模式命令提示符,然后执行:
netsh http add urlacl url=http://+:8003/ user=DOMAIN\UserName
Run Code Online (Sandbox Code Playgroud)
一切都非常好,我可以在我的本地开发机上手动完成.但是如何在客户端安装时执行此操作,而不是用户必须执行任何操作而不是在提示在管理模式下运行时单击"是"(仅在安装后/安装期间执行一次)?
像SO这样的网站如何让您通过Facebook,OpenID,Google,Blogger,Twitter等进行身份验证?
我正在编写一个ASP.NET(C#)站点,除了提供任何其他站点提供的常规普通用户名/密码之外,我还希望能够接受这样的登录.
我从哪里开始?
我一直在制作一些非常基本的MVC视图来保存一些数据.到目前为止,我已将它们全部基于LinqToSql类; 现在我第一次将表单基于我自己创建的一个简单的小类,称为a Purchase.
public class Purchase {
long UserID;
decimal Amount;
string Description;
}
Run Code Online (Sandbox Code Playgroud)
创建了一个如下所示的视图:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestViewer.Models.Purchase>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Test Purchase
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>
Test Purchase</h2>
<% using (Html.BeginForm("SavePurchase", "Home")) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.UserID) %>
</div>
<div class="editor-field">
<%: Html.DropDownListFor(model => model.UserID,
SystemUser.Select(u=>new SelectListItem{ Text=u.UserName, Value=u.ID.ToString()}).OrderBy(s=>s.Text))%>
<%: Html.ValidationMessageFor(model => model.UserID) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Amount) %>
</div>
<div …Run Code Online (Sandbox Code Playgroud) 非常着名的错误消息(见下文),根据Google搜索结果的数量来判断.但是我见过的每一个人都建议EnableEventValidation去false.我搜索了我的整个代码库,我无法在任何地方找到字符串"EnableEventValidation" .而且,这段代码用来工作; 我所做的事情显然打破了网页.但是什么?
单击Telerik RadGrid内的按钮时发生错误,声明为:
<telerik:RadGrid ID="MyGrid" Width="100%" ItemStyle-BorderColor="Gainsboro"
ItemStyle-BorderStyle="Solid" ItemStyle-BorderWidth="1px" ActiveItemStyle-BackColor="Bisque"
SelectedItemStyle-BackColor="Black" AllowPaging="True" PageSize="15" runat="server"
AllowSorting="true" OnItemCommand="MyGrid_ItemCommand" AutoGenerateColumns="false"
OnNeedDataSource="MyGrid_NeedDataSource" GridLines="Horizontal" AllowMultiRowSelection="false"
Skin="Black">
<GroupingSettings CaseSensitive="false" />
<MasterTableView Width="100%" DataKeyNames="ID" AllowFilteringByColumn="false" Font-Names="Arial"
Font-Size="10px">
<Columns>
<telerik:GridButtonColumn ButtonType="PushButton" Text="Cancel" CommandName="Cancel"
ConfirmText="Are you sure you want to cancel this?">
</telerik:GridButtonColumn>
...
</Columns>
</MasterTableView>
<PagerStyle Mode="NextPrevAndNumeric" />
<FilterMenu EnableTheming="True">
<CollapseAnimation Duration="200" Type="OutQuint" />
</FilterMenu>
</telerik:RadGrid>
Run Code Online (Sandbox Code Playgroud)
点击"取消"按钮,这是着名的错误:
Invalid postback or callback argument. Event validation is enabled using <pages …
我正在试验Application.AddMessageFilter,使用一些最初由 Somebody Else 编写的代码,所以我不一定了解这里发生的一切。
下面是代码的样子。在Main():
Application.AddMessageFilter(new KeyDownMessageFilter());
Run Code Online (Sandbox Code Playgroud)
在KeyDownMessageFilter:
internal class KeyDownMessageFilter : IMessageFilter {
private const int WM_KEYDOWN = 0x0100;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_KEYDOWN)
{
var k = (Keys)m.WParam;
var c = (char)k;
// and some other stuff
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到,通过转换m.WParam为 type 的变量,System.Windows.Forms.Keys然后将其转换为 a char,我可以知道按下了键盘上的哪个键。到现在为止还挺好。
但是 - 我无法弄清楚如何区分Shifted 键和没有 a 键的按键Shift- 例如,按下会%产生字符“5”。更奇怪的是,查看 的值k …
我需要创建一个布尔值数组,其范围可以是100,000s甚至数百万条.它还需要超快,因此每次迭代的每毫秒都很重要.
在开始循环时,我已经知道数组中将有多少条目.问题是,预先创建一个bool数组并通过索引填写值会更快(这是随机访问 - 可能会很慢吗?),或者我应该创建一个List<bool>,继续向列表中添加条目,以及结束回归.ToArray()?
换一种说法:
选项1
var array = new bool[size];
for (var n=0; n<size; n++)
array[n] = GetValue(n);
return array;
Run Code Online (Sandbox Code Playgroud)
选项2
var list = new List<bool>();
for (var n=0; n<size; n++)
list.Add(GetValue(n));
return list.ToArray();
Run Code Online (Sandbox Code Playgroud)
或者也许第三种方式更快?
我想编写一个通用扩展方法,它将根据用户定义的过滤器返回一组指定的对象,其签名如下:
public static IEnumerable<T> GetObjects<T>(this ObjectSet<T> os, string fieldName, object value) where T : EntityObject {}
Run Code Online (Sandbox Code Playgroud)
当然,我们可以更改签名以处理多个过滤器,但让我们首先关注单场过滤器.
您如何编写执行此操作的Linq查询?
我有一个大表,出于测试目的,我想将其中每一行的列更新为不同的随机值。
如果我说:
update MyTable
set MyCol = Rand()*100
Run Code Online (Sandbox Code Playgroud)
那么该值确实是随机的 - 但它与应用于每一行的随机数相同。
我可以使用游标来逐行迭代和更新每一行,这显然是我在必要时会依靠的。但是是否有某种 SQL 语法可以在一个简洁的语句中用不同的随机值更新每一行?
我有一个表MyTable,它有一个外键字段OtherTableID.
我已经有几千行了MyTable.现在我想随机化,OtherTableID以便它具有一些随机(但有效)的条目值OtherTable.
任何想法如何在一个简洁的查询中做到这一点,没有使用游标?
我在我的Entity Framework 5模型中定义了一个枚举,我用它来定义表格中字段的类型,例如
public enum PrivacyLevel : byte {
Public = 1,
FriendsOnly = 2,
Private = 3,
}
Run Code Online (Sandbox Code Playgroud)
我有一个表Publication有一个tinyint字段PrivacyLevel,我已经在EF模型中映射使用PrivacyLevel上面定义的类型,使用此处描述的方法.
但我也希望能够为枚举的每个值显示字符串描述.这是我过去为枚举做的,通过使用Description属性进行装饰,例如
public enum PrivacyLevel : byte {
[Description("Visible to everyone")]
Public = 1,
[Description("Only friends can view")]
FriendsOnly = 2,
[Description("Only I can view")]
Private = 3,
}
Run Code Online (Sandbox Code Playgroud)
我有一些代码通过检查它们是否具有Description属性将枚举转换为字符串,并且运行良好.但是在这里,因为我必须在我的模型中定义枚举,底层代码是自动生成的,并且我没有任何稳定来装饰它们.
任何解决方法的想法?
c# ×7
asp.net ×2
sql-server ×2
algorithm ×1
asp.net-mvc ×1
deployment ×1
facebook ×1
http ×1
linq ×1
openid ×1
sql ×1
telerik ×1
wcf ×1
winforms ×1