小编Stu*_*art的帖子

诊断IIS 7和ASP.NET MVC上的404错误

我有一个用Cassini开发和测试的mvc应用程序.在GoDaddy上部署到我的网站,默认页面就可以了.点击登录,我得到404.

我在IIS 7下运行,所以这是出乎意料的.我的路线很简单:

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              
            "{controller}/{action}/{id}",                           
            new { controller = "Public", action = "Index", id = "" } 
        );
        routes.MapRoute(
            "Report1",
            "Report/{action}/{start}/{end}",
            new { controller = "Report", action = "Index" }
        );
        routes.MapRoute(
            "Report2",
            "Report/{action}/{start}/{end}/{idList}",
            new { controller = "Report", action = "Index" }
        );
Run Code Online (Sandbox Code Playgroud)

知道可能会发生什么或我如何解决这个问题?

asp.net iis asp.net-mvc iis-7 httphandler

19
推荐指数
3
解决办法
5万
查看次数

Spark:以编程方式在scala中创建数据框架构

我有一个小的数据集,它将是Spark工作的结果.我正在考虑在作业结束时将此数据集转换为数据框以方便,但却难以正确定义架构.问题是下面的最后一个字段(topValues); 它是一个元组的ArrayBuffer - 键和计数.

  val innerSchema =
    StructType(
      Array(
        StructField("value", StringType),
        StructField("count", LongType)
      )
    )
  val outputSchema =
    StructType(
      Array(
        StructField("name", StringType, nullable=false),
        StructField("index", IntegerType, nullable=false),
        StructField("count", LongType, nullable=false),
        StructField("empties", LongType, nullable=false),
        StructField("nulls", LongType, nullable=false),
        StructField("uniqueValues", LongType, nullable=false),
        StructField("mean", DoubleType),
        StructField("min", DoubleType),
        StructField("max", DoubleType),
        StructField("topValues", innerSchema)
      )
    )

  val result = stats.columnStats.map{ c =>
    Row(c._2.name, c._1, c._2.count, c._2.empties, c._2.nulls, c._2.uniqueValues, c._2.mean, c._2.min, c._2.max, c._2.topValues.topN)
  }

  val rdd = sc.parallelize(result.toSeq)

  val outputDf = sqlContext.createDataFrame(rdd, outputSchema)

  outputDf.show()
Run Code Online (Sandbox Code Playgroud)

我得到的错误是MatchError: scala.MatchError: ArrayBuffer((10,2), …

schema scala dataframe apache-spark

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

如何使用Angular Material2创建嵌套的折叠菜单?

我正在寻找Angular Material2中对侧栏内嵌套菜单的支持.顶级通常默认关闭,打开顶级会暴露嵌套的菜单项.

我认为这是一个有意义的起点,但子导航项在父项之外渲染(很差):

plnkr

<md-sidenav-container class="my-container">
  <md-sidenav #sidenav class="my-sidenav">
    <md-list>
        <md-list-item>
          <h3 md-line> First Parent </h3>
          <md-nav-list>
            <a md-list-item href="#">First Child</a>
            <a md-list-item href="#">Second Child</a>
            <a md-list-item href="#">Third Child</a>
          </md-nav-list>
        </md-list-item>
        <md-list-item>
          <h3 md-line> Second Parent </h3>
          <md-nav-list>
            <a md-list-item href="#">First Child</a>
            <a md-list-item href="#">Second Child</a>
          </md-nav-list>
        </md-list-item>
    </md-list>
  </md-sidenav>  
  <div class="my-container">
    <button md-button (click)="sidenav.open()">Open</button>
  </div>
</md-sidenav-container>
Run Code Online (Sandbox Code Playgroud)

有人用@ angular/material创建了这种侧边栏菜单吗?

angular-material2 angular

11
推荐指数
1
解决办法
5393
查看次数

如何确保反应测试库测试等待完整的承诺链?

在我的登录表单中,成功登录会启动一个承诺链,最终用户被重定向到主屏幕。在下面的测试中,我希望通过捕获最后一步来确保我的登录有效。

我在代码中包含日志语句,告诉我承诺链中的每个步骤都按我的预期执行,但断言仍然失败。从我的日志记录可以清楚地看出,测试在承诺链执行之前完成。

我认为这可能会因为我在实际形式中使用的 Formik 的行为而变得复杂。我无法成功查询并等待登录时显示的微调器。

我不知道如何让这个测试等到导航发生。可以触发什么承诺决议waitFor来完成?

import { act, render, screen, waitFor } from "@testing-library/react"
import userEvent from "@testing-library/user-event"

import React from "react"

import { AuthProvider } from "context/auth-context"
import { rest } from "msw"
import { setupServer } from "msw/node"
import { MemoryRouter as Router } from "react-router-dom"
import { LoginScreen } from "screens/login"
import { handlers } from "test/auth-handlers"
import { buildLoginForm } from "test/generate/auth"
import { deferred } from "test/test-utils"

const Wrapper = ({ children …
Run Code Online (Sandbox Code Playgroud)

jestjs react-testing-library

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

AngularJS - 不会在$ resource上调用transformRequest

我正在向AngularJS资源添加一对动作,但是当我调用动作时,我的transformRequest函数没有被调用:

    var _resource = $resource('api/NewItem/:id',
    { id: '@id' },
    {
        create: {
            method: 'POST',
            transformRequest: function (data, headersGetter) {
                var result = JSON.stringify(data.productIntro);
                return result;
            }
        },
        update: {
            method: 'PUT',
            transformRequest: function (data, headersGetter) {
                var result = JSON.stringify(data.productIntro);
                return result;
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果我在应用程序上全局添加该功能,它可以工作:

var newItemApp = angular.module('newItemApp', ['ngResource'])
.config(function ($httpProvider) {
    $httpProvider.defaults.transformRequest = function(data)
    {
        if (data === undefined) {
            return data;
        }
        var result = JSON.stringify(data.productIntro);
        return result;
    };
});
Run Code Online (Sandbox Code Playgroud)

我需要做的是从任何POST或PUT操作中删除根元素,因为当该对象具有命名根时,Web Api中的默认模型绑定不会绑定json对象.

angularjs

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

获取新的访问令牌时,不应替换oauth2中的刷新令牌

标题中的陈述是否正确?我的问题基于Taiseer Joudeh所做的工作(感谢您关于这个主题的工作,顺便说一下),请访问http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app -using-asp-net-web-api-2-owin /.

如果我正确理解刷新令牌的行为,当访问令牌到期时,我们应该调用我们的auth服务器的令牌端点

'grant_type=refresh_token&refresh_token=' + token
Run Code Online (Sandbox Code Playgroud)

我们将获得一个新的访问令牌.该请求将有一个刷新令牌作为有效负载的一部分,但该刷新令牌不应该与我们刚才使用的那个相同吗?或者至少它应该有相同的到期日期?如果没有,那么真的,刷新生命周期是无限的.

以下是我希望传递的frisby.js测试,但是使用Taiseer的Web Api 2实现,最终的期望失败了.我们得到一个新的刷新令牌,该令牌上有一个新的到期时间.

'use strict';

var frisby = require('frisby');
var config = require('../test-config.json');

var args = config[process.env.test || 'local'];
var host = args.host,
    clientId = args.clientId,
    usr = args.user1,
    pwd = args.password1;

frisby.create('Try and fail to get a protected resource')
    .get(host + '/api/test')
    .expectStatus(401)
    .expectHeaderContains('WWW-Authenticate', 'bearer')
    .toss();

frisby.create('Log in and get a protected resource')
    .post(host + '/token', {
        grant_type: 'password',
        username: usr,
        password: pwd,
        client_id: clientId
    })
    .expectJSONTypes({
        access_token: …
Run Code Online (Sandbox Code Playgroud)

refresh oauth token asp.net-web-api2

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

在Windows上安装librdkafka以支持Python开发

一点背景:我正在研究我们团队中其他开发人员将使用的一些python模块.每个模块的一个共同主题是将向Kafka发布一条或多条消息.我们此时打算使用Confluent Kafka客户端.我们在组织中对python开发很新 - 我们传统上一直是.NET商店.

复杂性:虽然我们创建的代码将在Linux(rhel 7)上运行,但大多数开发人员都会在Windows上完成他们的工作.

因此,我们需要在每个开发人员机器上编译的librdkafka C库(它具有自己的依赖关系,其中一个是OpenSSL).然后一个confluent-kafka的pip安装应该正常工作,这意味着我们的包的pip安装将起作用.理论上.

首先,我在我的Linux笔记本电脑(Arch)上安装了.我知道我已经有了OpenSSL和其他zip lib依赖项,所以这个过程很简单:

  • git clone librdkafka repo
  • 根据自述文件进行配置,制作和安装
  • pip install confluent-kafka
  • DONE

librdkafka的安装进入/usr/local:

/usr/local/lib/librdkafka.a
/usr/local/lib/librdkafka++.a
/usr/local/lib/librdkafka.so -> librdkafka.so.l
/usr/local/lib/librdkafka++.so -> librdkafka++.so.l
/usr/local/lib/librdkafka.so.l
/usr/local/lib/librdkafka++.so.l
/usr/local/lib/pkgconfig/rdkafka.pc
/usr/local/lib/pkgconfig/rdkafka++.pc
/usr/local/include/librdkafka/rdkafkacpp.h
/usr/local/include/librdkafka/rdkafka.h
Run Code Online (Sandbox Code Playgroud)

现在是痛苦的部分,使其在Windows上运行:

  • 安装预编译的OpenSSL
  • git clone librdkafka repo
  • 在VS2015开放
  • 通过NuGet安装libz
  • 构建解决方案
  • 安装到哪里???

这就是我被困住的地方.Windows 7/8/10计算机上的标准安装是什么样的?

我从构建输出中得到以下内容,但不知道应该去哪里才能使pip install confluent-kafka"正常工作":

/librdkafka/win32/Release/librdkafka.dll
/librdkafka/win32/Release/librdkafka.exp
/librdkafka/win32/Release/librdkafka.lib
/librdkafka/win32/Release/librdkafkacpp.dll
/librdkafka/win32/Release/librdkafkacpp.exp
/librdkafka/win32/Release/librdkafkacpp.lib
/librdkafka/win32/Release/zlib.dll
<and the .h files back in the src>
Run Code Online (Sandbox Code Playgroud)

有关安装位置的任何建议吗?

python windows apache-kafka

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

内部部署ADFS流的正确身份验证设置是什么?

我一直在阅读Vittorio Bertocci的博客,试图在MVC应用程序或WebApi服务中使用ADFS来管理身份验证和声明.看起来它变得非常平易近人.

我现在正在尝试使用ADFS构建POC,以便为我们企业中的内部站点/服务执行常见的索赔解决方案.我们的用户将与我们的终端一起位于内部网络上.现在我们默认使用Windows Integrated身份验证,每个站点都会查找用户的姓名,电子邮件和其他AD详细信息,并通过IsInRole检查角色的声明主体.我们使用集成身份验证获得的声明仅包括SamIdentifier和一组组SID.我希望ADFS为我们做这项工作,但仍然为我们的用户提供无挑战的体验.从长远来看,我们可能会在某些网站/服务上添加对非域加入设备的支持,这是探索ADFS的另一个动机.

所以我在VS2013中使用组织帐户(On Premise)设置了一个简单的示例应用程序,它将转储当前用户的声明,配置元数据端点和受众uri,传达该信息以及我想要映射到我的声明ADFS admin(2012,btw),并将我的站点部署到开发服务器.所以我的主机仍然是IIS,虽然我希望使用Owin中间件来设置身份验证而不是web.config(WIF风格).

鉴于IIS是我的主机,如何为我的站点配置身份验证:匿名?我的web.config应该为身份验证模式指定"None"并且deny ="?" 授权,对吗?

另外一个问题我维托里奥没有在他关于内部部署adfs的帖子中提到的是持票人令牌的性质以及我们是否需要明确配置中间件以使用cookie.我的启动配置现在看起来像这样:

    public void ConfigureAuth(IAppBuilder app)
    {
        app.UseActiveDirectoryFederationServicesBearerAuthentication(
            new ActiveDirectoryFederationServicesBearerAuthenticationOptions
            {
                MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
                TokenValidationParameters = new TokenValidationParameters() { ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] }
            });
    }
Run Code Online (Sandbox Code Playgroud)

看起来这个中间件期待JWT令牌(假设该类上有一个JwtSecurityTokenHandler).我们需要在ADFS端进行任何配置来发布JWT令牌吗?我的理解是默认情况下我会收到一个SAML令牌.

我们是否应该使用CookieAuthentication中间件来管理令牌,或者浏览器是否会在会话期间保持包含它?

谢谢,全部!

更新:所以基于Vittorio的帮助和一些进一步的研究,我现在有一个简单的网站只有一页保护[Authorize]属性.我的启动类的ConfigureAuth方法现在看起来像这样:

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseActiveDirectoryFederationServicesBearerAuthentication(
            new ActiveDirectoryFederationServicesBearerAuthenticationOptions
            {
                MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
                TokenValidationParameters = new TokenValidationParameters() { ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] }
            });
    }
Run Code Online (Sandbox Code Playgroud)

我们已将我的网站添加为ADFS中的依赖方信任,并创建了六个声明规则.到目前为止,一切似乎都是正确的,但我仍在苦苦挣扎.我点击了受保护的"声明"页面并获得了一个带有WWW-Authenticate:Bearer标头的401响应.到现在为止还挺好.

但就是这样.浏览器如何知道在何处获得身份验证并接收令牌?如果我证明了单独的客户端场景,我的客户端将配置令牌权限的位置,但在这个简单的网站场景中,我显然遗漏了一些东西.

更新2:我想知道内部部署ADFS的实现还没有准备好吗?或者也许文档还没有 - 或者两者都有......

我撤出了所有Owin包并恢复使用WSFederationAuthenticationModule和SessionAuthenticationModule,以及system.identityModel和system-identityModel.services中已经存在一段时间的所有web.config设置.基本上,当您选择组织帐户 - > On Premise时,我使解决方案看起来就像您从VS2013获得的解决方案.一切都很美妙,我所有配置的声明来自ADFS.我看到最初的302重定向到ADFS,质询 - 响应,并最终将SAML令牌序列化为安全会话cookie.在网站上,我回应了这样的说法:

var user = User …
Run Code Online (Sandbox Code Playgroud)

authentication iis adfs owin

3
推荐指数
1
解决办法
3939
查看次数