我正在使用System.Web.Http.RouteAttribute并System.Web.Http.RoutePrefixAttribute为我的Web API 2应用程序启用更干净的URL.对于我的大部分请求,我可以使用路由(例如Controller/param1/param2)或者我可以使用查询字符串(例如Controller?param1=bob¶m2=mary).
不幸的是,对于我的一个控制器(并且只有一个),这会失败.这是我的控制器:
[RoutePrefix("1/Names")]
public class NamesController : ApiController
{
[HttpGet]
[Route("{name}/{sport}/{drink}")]
public List<int> Get(string name, string sport, string drink)
{
// Code removed...
}
[HttpGet]
[Route("{name}/{drink}")]
public List<int> Get(string name, string drink)
{
// Code removed...
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用路由请求时,两者都可以正常工作.但是,如果我使用查询字符串,它会失败,告诉我该路径不存在.
我已经尝试将以下内容添加到我的WebApiConfig.cs类' Register(HttpConfiguration config)函数(在默认路由之前和之后),但它没有做任何事情:
config.Routes.MapHttpRoute(
name: "NameRoute",
routeTemplate: "{verId}/Names/{name}/{sport}/{drink}",
defaults: new { name = RouteParameter.Optional, sport = RouteParameter.Optional, drink = RouteParameter.Optional },
constraints: new { verId = @"\d+" }); …Run Code Online (Sandbox Code Playgroud) c# query-string asp.net-web-api attributerouting asp.net-web-api-routing
我正在设置一个新的.NET MVC项目,并希望使用我的本地ADFS来管理用户.我知道运行ADFS的计算机的IP地址,并尝试将其用于"内部部署权限"URL,但我收到一条消息,指出它不正确.
是否有命令我可以运行以找到我应该用于此字段的地址/网址?
作为参考,这是我正在谈论的菜单框:

我正在尝试在AWS Lambda函数中生成一个同步子进程(运行ffprobe),但它几乎立即(200ms)死于信号SIGSEGV.
我对分段错误的理解是,它是一个尝试访问不允许访问的内存的进程.我尝试将内存增加到1024MB(我使用128MB,因为每次执行仅使用大约56MB),但这并没有改变任何东西.
我知道我不是唯一遇到此问题的人:https://forums.aws.amazon.com/thread.jspa?threadID = 229397
有谁知道如何解决这个问题?
2016年4月25日更新
为清楚起见,我运行的代码是:
import { spawnSync } from 'child_process';
exports.handler = (event, context) => {
process.env.PATH = `${process.env.PATH}:${process.env.LAMBDA_TASK_ROOT}`;
const ffprobe = './ffprobe';
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
console.log(`bucket: ${bucket}`);
console.log(`key: ${key}`);
const url = 'http://my-clip-url.com'; // An s3 presigned url.
if (!url) {
throw new Error('Clip does not exist.');
}
const command = `-show_format -show_streams -print_format json ${url}`;
try {
const child = spawnSync(ffprobe, command.split(' '));
console.log(`stdout: ${child.stdout.toString()}`) …Run Code Online (Sandbox Code Playgroud) child-process amazon-web-services node.js ffprobe aws-lambda
我的问题:为什么不在我的不可变状态(Map)中更新数组中对象的属性不会导致Redux更新我的组件?
我正在尝试创建一个将文件上传到我的服务器的小部件,我的初始状态(从我将在下面看到的UploaderReducer内部)对象看起来像这样:
let initState = Map({
files: List(),
displayMode: 'grid',
currentRequests: List()
});
Run Code Online (Sandbox Code Playgroud)
我有一个thunk方法,可以在事件发生时启动上传和调度操作(例如进度更新).例如,onProgress事件如下所示:
onProgress: (data) => {
dispatch(fileUploadProgressUpdated({
index,
progress: data.percentage
}));
}
Run Code Online (Sandbox Code Playgroud)
我正在使用redux-actions创建和处理我的操作,因此我对该操作的reducer看起来像这样:
export default UploaderReducer = handleActions({
// Other actions...
FILE_UPLOAD_PROGRESS_UPDATED: (state, { payload }) => (
updateFilePropsAtIndex(
state,
payload.index,
{
status: FILE_UPLOAD_PROGRESS_UPDATED,
progress: payload.progress
}
)
)
}, initState);
Run Code Online (Sandbox Code Playgroud)
而且updateFilePropsAtIndex样子:
export function updateFilePropsAtIndex (state, index, fileProps) {
return state.updateIn(['files', index], file => {
try {
for (let prop in fileProps) {
if …Run Code Online (Sandbox Code Playgroud) 我正在尝试<see cref="">在我的XML文档标签中使用我的API中的标签,但它们在帮助页面中显示为空白.
因此,对于描述我想说:
"获取或设置关联项的值."
其中Item是API中另一个对象的链接.
相反,我得到:
"获取或设置关联的值."
所以<see cref="">标签被忽略了.我甚至尝试过使用这里的例子以防万一我的声明是错误的,但这也没有用.
还有其他人有这个问题吗?新Web API 2帮助页面支持的XML文档标记的级别是多少?有人知道是否可以手动添加对此的支持,如果没有?
c# xml-documentation asp.net-web-api asp.net-web-api-helppages
我在MVC 5布局页面中有一个基本指令,带有搜索指令.我的问题是无法加载templateUrl(400错误).如果我直接在浏览器中输入URL,我可以毫不费力地加载html页面.我无法找出加载页面的AJAX调用失败的原因.
Chrome调试器

这是Chrome中的HTML页面加载

app.js
(function() {
var app = angular.module("mainApp");
app.directive("basicSearch", function() {
return {
templateUrl: 'app/directives/basic-search.html',
controller: function($scope, search) {
$scope.keyword = '';
$scope.exact = false;
$scope.submitSearch = function () {
search.searchByKeyword($scope.keyword, 0, $scope.exact);
}
}
}
});
}());
Run Code Online (Sandbox Code Playgroud)
基本-search.html
<div>
<input type="search" ng-model="keyword" name="keyword" />
<button type="submit" ng-click="submitSearch()"></button>
<input type="checkbox"ng-model="exact" name="exact" />
<label for="exact">Exact Match?</label>
</div>
Run Code Online (Sandbox Code Playgroud)
_Layout.cshtml
<html>
<head>
<base href="@Request.ApplicationPath" />
<!--- JS & CS References -->
<title></title>
</head>
<body ng-app="mainApp">
<!-- Other stuff -->
<basic-search></basic-search> …Run Code Online (Sandbox Code Playgroud) 简单地说,是否可以将转移加速(TA)与使用AWS-SDK for JavaScript生成的预签名URL一起使用?
为特定S3存储桶启用TA会提供格式为的URL : {bucket}.s3-accelerate.amazonaws.com. 但是,在为请求指定参数时,似乎唯一有效的选项似乎{Bucket: 'bucket', Key: 'key', Body: 'body', Expires: 60}并不允许我说我想使用TA.生成的URL采用通常的格式{bucket}.s3-{region}.amazonaws.com,这对TA来说是错误的.
该文档似乎没有提供有关预签名URL的大量信息.
当我dotnet build从我的WSL(Windows子系统Linux版)发行版中运行我的代码时,C#intellisense会中断,我会收到如下错误:
我设法设置了这里的启动配置,但这对Intellisense没有帮助,除非我错过了什么.
我认为它与路径配置有关,但我不确定要改变什么,或者我应该在哪里改变它.
简而言之,如何在WSL上编译和运行我的代码并在VS Code中编辑它而不会出现错误或警告?
根据无服务器应用程序模型中的文档,AWS::Serverless::Function可以为Policies资源的属性指定IAM策略文档对象(PDO)的列表.
但是,当我尝试定义IAM PDO时,AWS Toolkit for Visual Studio正在标记语法错误:

以下是我的Resources部分的完整示例:
"Resources": {
"Example" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "Example::Example.Controllers.ExampleController::ExampleAction",
"Runtime": "dotnetcore2.0",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 30,
"Policies": [{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
}],
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "/{id}",
"Method": "GET"
}
}
}
}
}
}
有什么我错了,或者SAM或AWS Toolkit语法验证有问题吗?
amazon-web-services aws-serverless aws-visual-studio-toolkit serverless-application-model
如果我有两个服务,"用户"和"产品",每个服务都有几个函数,每个函数都为每个函数定义了端点(就像任何传统的API那样),它们是否可以在代码库中单独组织(为清晰起见)但是部署后共享相同的API基本URL?例如,考虑我有以下结构:
/src
-- /users
---- event.json
---- handler.js
---- serverless.yml
-- /products
---- event.json
---- handler.js
---- serverless.yml
Run Code Online (Sandbox Code Playgroud)
我src/users/serverless.yml的定义如下:
functions:
create:
handler: handler.create
events:
- http: POST user
read:
handler: handler.read
events:
- http: GET user
Run Code Online (Sandbox Code Playgroud)
而且我的src/products/serverless.yml基本相同,只是将'用户'换成'产品'.
目前,这两种服务都将部署到截然不同的API端点,一个具有URL https://fghijklmnop.execute-api...,另一个具有URLhttps://abcdevwxyz.execute-api....
我的问题是,是否可以部署这些服务,但仍保留在具有单个URL的单个API下(因此两者都将在URL下提供https://abcdevwxyz.execute-api....)?
我假设答案是'不,因为云形成......',但我想我会在这里发布问题只是为了讨论并帮助我自己理解构建无服务器应用程序.
我知道使用Custom Domains,根据这里的答案,但是为了更快的开发周期,这不是一个理想的解决方案.
到目前为止,我唯一的解决方案是简单地创建一个名为"api"的服务,该服务将包含我的API所需的所有端点,这些端点将直接调用我的其他服务的Lambda函数,而不是通过先前配置的端点.它确实是一个抽象层,但是在我的应用程序中添加了可能不必要的层.再次,好奇地看到社区对此的看法.
aws-cloudformation microservices aws-api-gateway serverless-framework
c# ×3
javascript ×3
asp.net-mvc ×2
node.js ×2
adfs ×1
amazon-s3 ×1
angularjs ×1
aws-lambda ×1
aws-sdk ×1
ffprobe ×1
immutable.js ×1
omnisharp ×1
query-string ×1
reactjs ×1
redux ×1
serverless-application-model ×1