小编Reb*_*cca的帖子

window.open target _self v window.location.href?

我需要使用JavaScript重定向用户.哪种方法首选?

window.open("webpage.htm", "_self");
Run Code Online (Sandbox Code Playgroud)

要么

window.location.href = "webpage.htm";
Run Code Online (Sandbox Code Playgroud)

javascript

60
推荐指数
4
解决办法
17万
查看次数

WCF IErrorHandler将FaultException返回到SOAP和WebHttpException到POX和Json端点

我有一组使用IErrorHandler包装异常的SOAP Web服务,具体来说:

public sealed class ErrorHandler : IErrorHandler
{
    public bool HandleError(Exception error)
    {
        return true;
    }

    public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
    {
        // don't wrap existing fault exceptions
        if ((error is FaultException)) return;

        // our basic service fault
        var businessFault = new BusinessFault { FaultMessage = error.Message, FaultReference = "Internal" };

        // Resource based faultReason
        var faultReason = new FaultReason(Properties.Resources.BusinessFaultReason);
        var faultcode = FaultCodeFactory.CreateVersionAwareSenderFaultCode(InternalFaultCodes.BusinessFailure.ToString(), Service.Namespace);

        var faultException = new FaultException<BusinessFault>(
            businessFault,
            faultReason,
            faultcode);

        // Create …
Run Code Online (Sandbox Code Playgroud)

rest wcf soap

17
推荐指数
1
解决办法
2810
查看次数

DataMember IsRequired属性是否与Nullable类型相矛盾?

我今天在WCF合同中遇到过这个问题:

[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; } 
Run Code Online (Sandbox Code Playgroud)

可以IsRequired = True和可空的后果是什么DateTime?他们似乎彼此矛盾.

.net c# wcf datamember isrequired

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

使用TimePeriod.NET的CalendarPeriodCollector计算"工作时间"会产生意外结果

我正在尝试计算服务级别协议的截止日期,同时,我还需要在另一个方向上重新计算服务级别协议.

我一直在努力计算"工作时间"(即在一系列日子里工作的时间),并决定使用名为TimePeriodLibrary.NET的第三方库来完成任务.我需要做两件事:

  • 如果有一个开始DateTime和一个TimeSpan,您应该收到DateTime一个服务级别协议日期到期(到期日期).
  • 在开始DateTime和结束时DateTime,您应该收到TimeSpan服务级别协议应该花多长时间.

所有源代码(测试项目都在GitHub上).我有一个ServiceLevelManager完成所有工作的课程.它采取的列表WorkDaysHolidayPeriods,以计算出它们可被工作时间.这CalendarPeriodCollector堂课给出了意想不到的结果.在从时间跨度确定到期日期时起作用的期望,在我重新计算它们时不能正确计算.

任何人都可以看到我做错了什么,或者图书馆是否有错误?

namespace ServicePlanner
{
    using System;
    using System.Collections.Generic;
    using Itenso.TimePeriod;

    public class ServicePlannerManager
    {
        public ServicePlannerManager(IEnumerable<WorkDay> workDays, IEnumerable<HolidayPeriod> holidays)
        {
            this.WorkDays = workDays;
            this.Holidays = holidays;
        }

        public IEnumerable<WorkDay> WorkDays { get; set; }

        public IEnumerable<HolidayPeriod> Holidays { get; set; }

        public TimeSpan GetRemainingWorkingTime(DateTime start, DateTime dueDate)
        {
            var filter = …
Run Code Online (Sandbox Code Playgroud)

c# datetime

15
推荐指数
1
解决办法
1917
查看次数

c#文件上传的分块传输与ServiceStack中对路由参数的访问相结合

我正在寻求使用该IRequiresRequestStream接口来启用使用ServiceStack(v3)和分块传输编码的大文件上传(视频文件).标准文件上传似乎无法应对客户上传的一些较大的视频文件,因此我们希望为这些文件启用分块传输编码.

我已成功测试了分块传输编码文件上传,但还有许多参数需要与文件一起发送.

由于IRequiresRequestStream绕过了ServiceStack请求对象解析器,Stream因此显然没有填充请求对象中的任何其他参数.作为一种解决方法,我可以看到以下选项:

  1. 查询字符串参数,可通过this.Request.QueryString集合访问
  2. 自定义标头参数,可通过this.Request.Headers集合访问
  3. 路径,可通过RequestBinder

我已经设法实现了选项1和2,但不知何故感觉还不够RESTful.我更喜欢使用Path -> RequestDTO,但我正在努力RequestBinder.

服务:

public object Any(AttachmentStreamRequest request)
{
    byte[] fileBytes = null;

    using (var stream = new MemoryStream())
    {
        request.RequestStream.WriteTo(stream);
        length = stream.Length;
        fileBytes = stream.ToArray();
    }

    string filePath = @"D:\temp\test.dat";
    File.WriteAllBytes(filePath, fileBytes);

    var hash = CalculateMd5(filePath);
    var requestHash = this.Request.QueryString["Hash"];
    var customerId = this.Request.QueryString["CustomerId"];
    var fileName = this.Request.QueryString["FileName"];

    // nicer would be
    // var requestHash = …
Run Code Online (Sandbox Code Playgroud)

.net c# chunked-encoding servicestack

15
推荐指数
1
解决办法
754
查看次数

使用WS-Security UsernameToken PasswordDigest身份验证方案的WCF客户端使用Axis 2 Web服务时出错

我有一个WCF客户端连接到基于Java的Axis2 Web服务(在我的控制之外).它即将应用WS-Security,我需要修复.NET客户端.但是,我正在努力提供正确的身份验证.我知道WSE 3.0可能会让它变得更容易,但我宁愿不再使用过时的技术.

类似的问题(未解决),包括这个,这个这个.

SOAP消息如下所示:

<wsse:UsernameToken>
  <wsse:Username><!-- Removed--></wsse:Username> 
  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"><!-- Removed--></wsse:Password> 
  <wsse:Nonce><!-- Removed--></wsse:Nonce> 
  <wssu:Created>2010-05-28T12:50:33.675+01:00</wssu:Created> 
</wsse:UsernameToken>
Run Code Online (Sandbox Code Playgroud)

但是,我的看起来像这样:

<s:Header>
<h:Security xmlns:h="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></h:Security>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2010-06-23T10:31:23.441Z</u:Created>
<u:Expires>2010-06-23T10:36:23.441Z</u:Expires>
</u:Timestamp>
<o:UsernameToken u:Id="uuid-d329b3b2-6a1f-4882-aea6-ec6b8a492de7-1">
<o:Username>
<!-- Removed-->
</o:Username>
<o:Password>
<!-- Removed-->
</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
Run Code Online (Sandbox Code Playgroud)

我的客户端看起来像这样:PS注意所需的 SecurityHeaderType参数.那是什么?

public MyAck SendRequest(MyRequest request)
{
 RemoteServicePortTypeClient client = new RemoteServicePortTypeClient();

 client.ClientCredentials.UserName.UserName = "JAY";
 client.ClientCredentials.UserName.Password = "AND";

    // what is the difference between the two different Credential …
Run Code Online (Sandbox Code Playgroud)

c# wcf ws-security axis2 web-services

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

多租户支持:Umbraco与Orchard项目

我目前正在使用旧版本的Umbraco(4.03),我有几个基本站点(大多数是1个寻呼机)在同一个IIS应用程序下运行.

我有一个Winhost.com的共享主机帐户,它不提供多个站点应用程序根,只提供域指针,因此我仅限于支持多租户的单个CMS安装.

Umbraco多租户设置有点hacky,我真的需要升级.似乎Orchard更专注于多租户支持.我的Umbraco安装有一些共享皮肤的问题,这一直有点烦人.

那么,基本问题是:

基于多租户情景,有没有人有Umbraco和Orchard的经验可以给我一个意见/比较?如果是这样,Umbraco的新版本是否比我在多站点支持方面使用的版本更好?

PS我知道关于两个CMS项目之间的比较已经有一些关于SO的问题,但我对多租户比较特别感兴趣.

asp.net umbraco multi-tenant orchardcms

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

Location头可以用于201 Created响应中的多个资源位置吗?

接受批量PUT创建然后返回多个位置的正确动词和响应是什么?Location标头仅显示支持单个Uri.

我原本假设我可以使用PUT进行批量创建并返回带有Uris列表的字符串数组,但是在查看规范时,似乎不支持,但它也不完全清楚.

是否允许多个位置标题作为替代?

有什么建议?

rest http

12
推荐指数
2
解决办法
3754
查看次数

将FluentMigrator与现有数据库一起使用

我正在寻找一个迁移框架,该框架将与使用.NetTiers的现有项目一起使用.NetTiers是一个需要CodeSmith生成数据访问代码的旧ORM.

我们有圆屋的经验,我们已成功使用它.在从Octopus Deploy运行部署时,我们还能够自动部署架构更改.相当简单,因为它只是SQL脚本的集合.

我有兴趣转到FluentMigrator.我喜欢FM DSL而且我发现这个SO问题非常有用,但是有一些我不理解的事情:

  1. 导入现有数据库模式[*]的正确方法是什么?
  2. 将迁移部署到生产环境的正确方法是什么[**]?

[*]我的假设是我使用SQL Server工具生成单个脚本,并使用ExecuteEmbeddedSql作为初始迁移.那是对的吗?

[**]似乎有三种主要方式来运行迁移(Command Line,NAnt runner,MSBuild runner).他们需要访问数据库才能运行.想象一下,我们希望将其部署到PROD环境中.开发人员和构建服务器无法访问此环境.你如何针对那种环境运行这些跑步者?

我们通常的部署过程是生成需要作为部署的一部分进行部署的SQL脚本集合.Ops作为部署的一部分运行它们,或者作为Octopus Deploy流程(powershell)的一部分自动运行,或者如果部署在Octopus之外,则手动运行.

我们在这个特定项目中遇到的一个复杂问题是.NetTiers.这意味着我们必须使用.NetTiers运行CodeSmith代码生成,才能构建数据访问层,然后才能对这些实体和数据服务进行编码.因此,我们的工作流程必须是:

  1. 写迁移
  2. 运行迁移到升级数据库(定位到特定的.NetTiers数据库)
  3. 针对特定的.NetTiers数据库(中央构建服务器)运行.NetTiers
  4. 针对新.NetTiers生成的实体,数据库字段等的代码

我很想抛弃.NetTiers,但遗憾的是,重构不是一个可行的选择.

.net .nettiers fluent-migrator

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

从ServiceStack身份验证返回自定义身份验证响应对象

是否可以返回自定义身份验证响应?我已经拥有自己的自定义身份验证提供程序,它继承自CredentialsAuthProvider.

我想在响应中返回会话到期日期,以便客户端确切地知道他们的服务器会话何时到期:

{
    "sessionId": "bG27SdxbRkqJqU6xv/gvBw==",
    "userName": "joe.bloggs@letmein.com",
    "sessionExpires": "2013-04-29T03:27:14.0000000",
    "responseStatus": {}
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样覆盖Authenticate方法:

public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request)
{
    // get base response
    var response = base.Authenticate(authService, session, request);

    // grab the session
    var customSession = authService.GetSession() as CustomUserSession;

    // if response can be cast and customSession exists
    if (response is AuthResponse && customSession != null)
    {
        // cast
        var authResponse = response as AuthResponse;

        // build custom response
        var customAuthResponse = new CustomAuthResponse
            {
                ReferrerUrl …
Run Code Online (Sandbox Code Playgroud)

servicestack

10
推荐指数
1
解决办法
2436
查看次数