我有一些秘密要保存在 Azure Key Vault 中。我知道我可以使用客户端 ID 和证书来通过 Key Vault 进行身份验证,而不是按照以下步骤使用客户端和密钥:
大多数示例使用 makecert 或 New-SelfSignedCertificate 来创建证书。在这种情况下,对于生产应用程序,自签名证书是否有问题?这仅适用于使用 Azure Key Vault 进行身份验证的应用程序,客户端不会在其浏览器中看到它。
如果在这种情况下仍然不赞成自签名证书,那么从受信任的机构购买证书是否与购买 SSL/TLS 证书的过程相同?它甚至是相同类型的证书吗?
我使用无状态服务模板创建了一个新的Service Fabric应用程序.我添加了一个简单的类,所以我可以为它编写一个单元测试:
public class FakeClass
{
    public void DoStuff()
    {
        FabricClient client = new FabricClient();
    }
} 
Run Code Online (Sandbox Code Playgroud)
我为单元测试创建了一个新的类库,并引用了xUnit和xUnit runner nuget包.当我尝试运行单元测试时,我收到以下错误:
结果消息:System.BadImageFormatException:无法加载文件或程序集"XUnitExample.WebService,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"或其依赖项之一.尝试加载格式不正确的程序.
如何让xUnit与Service Fabric一起使用,以便我可以编写单元测试?
我一直在试图弄清楚如何使用ASP.net 4.0 WebForms的路由功能.我添加了一条到我的路线集的路线:
void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute(
        "about-route",
        "about/",
        "~/About.aspx"
    );
}
Run Code Online (Sandbox Code Playgroud)
在我的母版页中,我尝试执行以下操作:
<asp:HyperLink ID="asdf" runat="server" NavigateUrl='<%= GetRouteUrl("about-route", new {}) %>'>Test</asdf>
Run Code Online (Sandbox Code Playgroud)
我遇到了编译器错误:服务器标签不能包含<%...%>结构.
在Web窗体中的服务器控件中创建路由URL的正确方法是什么?我还需要将其包含在以下内容中:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
    <Items>
        <asp:MenuItem NavigateUrl="ROUTE HERE" Text="Home"/>
        <asp:MenuItem NavigateUrl="ROUTE HERE" Text="About"/>
    </Items>
</asp:Menu>
Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的powershell脚本,它将创建一个excel实例并保存一个工作簿:
$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open("C:\Test\foo.xls")
$workbook.SaveAs("C:\Test\bar.xls")
# cleanup code ...
Run Code Online (Sandbox Code Playgroud)
当我直接从powershell运行它时,它工作正常。我创建了一个计划任务来运行它,并且当我设置了“仅在用户登录后才运行”选项集时,它将可以正常运行。
当我更改此选项以无论用户是否登录运行时,尝试打开/保存文件都将失败。我使用的帐户具有正确的权限。我已将帐户设置为“作为服务登录”。
有什么建议么?
我正在查看其他人的WCF服务合同,并注意到它正在使用out参数:
client.SomeMethod(parameter1, parameter2, out someOutParameter);
Run Code Online (Sandbox Code Playgroud)
是否有充分的理由使用out参数而不是将其添加到响应中?
编辑
 
这是代理生成的:
public string CreateItem(string contract, string note, out string warning)
Run Code Online (Sandbox Code Playgroud)
现在如果他们需要返回一个字符串并且还有一个警告,我通常会看到它:
public class CreateItemResponse
{
    public string Result { get; set; }
    public string Warning { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我只是好奇,如果有一个很好的理由不这样做,并使用返回的字符串和字符串作为out参数.
我在MVC中有以下模型:
public class IndexViewModel
{
    public SubViewModel SubViewModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的索引视图中,我正在执行以下操作以显示编辑器SubViewModel:
Index.cshtml
@model IndexViewModel
@Html.EditorFor(m => m.SubViewModel)
Run Code Online (Sandbox Code Playgroud)
在我的SubViewModel.cshtml文件中,我尝试执行以下操作:
EditorTemplates/SubViewModel.cshtml
@model SubViewModel
@Html.EditorForModel("SubViewModelForm")
Run Code Online (Sandbox Code Playgroud)
基本上,我想把我的编辑分成两部分.第一个编辑器模板将创建表单,而内部模板将创建所有实际表单字段.问题是内部视图永远不会被渲染.
这就像MVC意识到我已经在该模型上调用了EditorFor并阻止我再次这样做.我有办法让这个工作吗?
编辑
我以为我清楚地输出了发生的事情,但我猜不是.
我想使用两个模板来显示单个模型.在第一个模板中,我想渲染表单和提交按钮,以及一些容器div.
在第二个模板中,我想渲染所有表单域.
Index.cshtml @ Html.EditorFor(m => m.SubViewModel) - >渲染表单和容器
SubViewModel.cshtml @ Html.EditorForModel("SubViewModelForm") - >呈现表单字段
问题是第二次调用(@ Html.EditorForModel("SubViewModelForm"))似乎没有做任何事情.它根本不会呈现任何标签.它被MVC忽略了.
我想这样做的原因是因为我将使用ajax调用发布此表单.如果一切正常(模型状态有效),那么我想将JSON数据返回到视图.如果模型无效,我想只返回表单字段的局部视图.这样我就不需要再次连接所有的事件处理程序了.我只能替换表单字段而不是整个视图.
是否可以在实体框架中使用扩展方法进行投影:
public class ProjectRepository
{
    public IQueryable<ProjectDto> GetActiveProjects()
    {
        // db.Projects is a DbSet<Project>
        // i want to use a projection to convert it to ProjectDto,
        // I know I can do new ProjectDto but I would rather do an
        // extension method and abstract that logic out
        return from p in db.Projects
            where p.Status == "Active"
            select p.AsProjectDto();
    }
}
Run Code Online (Sandbox Code Playgroud)
现在我收到以下错误:
LINQ to Entities无法识别方法'AsProjectDto'方法,并且此方法无法转换为存储表达式.
LINQ to SQL似乎能够处理这个问题,但实体框架却没有.是否有某种方法我需要编写扩展方法,以便它在EF中工作?
这是我的扩展方法:
public static class ProjectExtensions
{
    public static ProjectDto AsProjectDto(this Project project) …Run Code Online (Sandbox Code Playgroud) 在Git中,您可以使用简写HEAD~来引用HEAD之前的提交,使用HEAD~2之前引用两个,等等.
我有一个存储库,具有如下所示的合并提交:
A----B-------------F
      \           /
       C----D----E
Run Code Online (Sandbox Code Playgroud)
HEAD = F,HEAD~指向B,HEAD~2指向A.使用这样的合并提交,是否有指向E的速记?
我试图使用看起来像这样的表达式创建一个可重用的方法:
Expression<Func<Order, bool>> CreateExpression(Expression<Func<Order, int>> parameter, FilterOperator operator, int value)
Run Code Online (Sandbox Code Playgroud)
所以我可以像这样使用它:
IQueryable<Order> orders = db.Orders;
var filtered = orders.Where(CreateExpression(o => o.OrderID, FilterOperator.GreaterThan, 100));
Run Code Online (Sandbox Code Playgroud)
我不知道怎么写这个方法.如何编写一个为我创建此Expression的方法?
我需要能够做这样的事情:
if(operator == FilterOperator.GreaterThan)
   return m => m.OrderID > value;
else if(operator == FilterOperator.LessThan)
   return m => m.OrderID < value;
Run Code Online (Sandbox Code Playgroud)
但我想使用传入的表达式而不是直接使用OrderID.我怎样才能做到这一点?
如果我编写一个只包装异步方法的方法,例如:
public async Task WrapMethodAsync()
{
    using(var smtpClient = new SmtpClient())
    {
        await smtpClient.SendMailAysnc(new MailMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)
这与执行以下操作相同:
public Task WrapMethodAsync()
{
    using(var smtpClient = new SmtpClient())
    {
        return smtpClient.SendMailAysnc(new MailMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)
或者后者实际上不是异步运行?
我有一个View Model,其定义如下:
public class VariableViewModel
{
    public string TemplateName { get; set; }
    public bool Enabled { get; set; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在其他View模型中使用此模型:
public class CreateViewModel
{
    [Display(Name="First Name")]
    public VariableViewModel FirstName { get; set; }
    [Display(Name="Last Name")]
    public VariableViewModel LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个为VariableViewModel定义的编辑器模板:
@model VariableViewModel
@Html.HiddenFor(model => model.TemplateName)
@Html.HiddenFor(model => model.Enabled)
@Html.LabelFor(model => model.Value)
@Html.TextBoxFor(model => model.Value)
Run Code Online (Sandbox Code Playgroud)
我的CreateViewModel的编辑器模板:
@model CreateViewModel
@Html.EditorFor(model => model.FirstName)
@Html.EditorFor(model => model.LastName)
Run Code Online (Sandbox Code Playgroud)
现在我的编辑器模板正在创建标签,如下所示:
<label for="FirstName">Value</label>
Run Code Online (Sandbox Code Playgroud)
是否有可能以查看 …
我有一个Service Fabric应用程序,下面有一些服务.他们目前都在1.0.0版本.
我为版本2.0.0的集群部署了一个更新.一切运行正常,部署成功.我注意到一个非常大但在版本中.有没有办法手动回滚到1.0.0版?我发现的唯一一件事是在升级过程中自动回滚.
c# ×6
.net ×3
asp.net-mvc ×2
asp.net ×1
async-await ×1
asynchronous ×1
cryptography ×1
excel ×1
git ×1
powershell ×1
security ×1
wcf ×1
webforms ×1
xunit ×1