我读了如果请求缺少必需参数,我应该使用什么HTTP状态响应代码?但它没有具体询问标题,似乎没有达成共识.
此问题的上下文假定验证成功.我目前偏爱400(虽然这感觉不对,因为这不是"格式错误的语法")或403.鉴于403的描述:
服务器理解请求,但拒绝履行请求.授权无效,请求不应重复.如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因.
这对我来说最有意义.
有人可以赐教吗?谢谢.
http-status-codes http-headers http-status-code-403 http-status-code-400
我已经阅读了一些帖子(参见下面的参考资料),还没有找到特定于我的技术堆栈的最佳实践指南.
目标:创建一个NuGet包,其目标是使用MSBuild和NuGet通过TeamCity从单个.csproj文件构建的多个.NET框架.
约束:
我有两种方法:
创建单个构建配置.它将包含三个构建步骤:编译.NET 3.5,编译.NET 4.0,使用NuGet打包.每个构建步骤都取决于最后一个成功.我用这种方法看到的唯一真正的问题(希望有一个我不知道的解决方案)是每个构建步骤都需要自己的一组构建参数(例如,system.TargetFrameworkVersion和system.OutputPath)来指定DLL的唯一位置(例如,bin\release\v3.5和bin\release\v4.0),以便NuGet包步骤能够根据.nuspec文件中的Files部分执行其操作.
创建多个构建配置.每个构建步骤的一个构建配置.使用这种方法,很容易解决TargetFrameworkVersion和OutputPath构建参数问题,但我现在必须创建快照依赖项并在构建中共享程序集版本号.它也会占用构建配置插槽,这对我们来说是好的(但不是最佳的),因为我们拥有Enterprise许可证.
选项#1似乎是显而易见的选择.选项#2感觉很脏.
所以我的两个问题是:
参考文献:
msbuild teamcity .net-framework-version multitargeting nuget
在关于实施IExceptionLogger(http://www.asp.net/web-api/overview/testing-and-debugging/web-api-global-error-handling)的官方文件的讨论之后,该文件链接到(现在已过时) ?)关于实施ExceptionFilterAttribute(http://www.asp.net/web-api/overview/testing-and-debugging/exception-handling)的文章,ExceptionFilterAttribute如果您注册服务,是否有任何理由注册全局IExceptionLogger?
我做了,并且在调试控制器操作中生成的异常时,两个实现都处理了异常.因此IExceptionLogger,文章中引用的所有原因都是优越的.我们应该考虑ExceptionFilterAttribute弃用吗?如果没有,为什么不呢?
我试图使用AsyncTargetingPack异步将一些信息记录到针对.NET 4.0的MVC 4控制器操作中的SQL Server.我会直接跳到.NET 4.5,但我的应用程序存在于Azure中,我们仍在等待更新 ...
此代码按预期工作(一行写入我的数据库,没有抛出异常):
public class SystemActionLogger : ISystemActionLogger
{
private readonly ActionBlock<Tuple<SystemAction, object>> actionBlock;
public SystemActionLogger(ISystemActionLogEntryRepository repository)
{
actionBlock = new ActionBlock<Tuple<SystemAction, object>>(
entry => TaskEx.Run(async () =>
{
string data = await JsonConvert.SerializeObjectAsync(entry.Item2);
await repository.PersistAsync(new SystemActionLogEntry(entry.Item1, data));
}));
}
public void Log(SystemAction systemAction, object data)
{
actionBlock.Post(new Tuple<SystemAction, object>(systemAction, data));
}
}
Run Code Online (Sandbox Code Playgroud)
并且此代码抛出NullReferenceException:
public class SystemActionLogger : ISystemActionLogger
{
private readonly ActionBlock<Tuple<SystemAction, object>> actionBlock;
public SystemActionLogger(ISystemActionLogEntryRepository repository)
{
actionBlock = new ActionBlock<Tuple<SystemAction, object>>(async entry …Run Code Online (Sandbox Code Playgroud) 鉴于以下课程:
public class WeekOfYear : IEquatable<WeekOfYear>, IComparable<WeekOfYear>
{
private readonly DateTime dateTime;
private readonly DayOfWeek firstDayOfWeek;
public WeekOfYear(DateTime dateTime)
: this(dateTime, DayOfWeek.Sunday)
{
}
public WeekOfYear(DateTime dateTime, DayOfWeek firstDayOfWeek)
{
this.dateTime = dateTime;
this.firstDayOfWeek = firstDayOfWeek;
}
public int Year
{
get
{
return dateTime.Year;
}
}
public int Week
{
get
{
return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, firstDayOfWeek);
}
}
public bool Equals(WeekOfYear other)
{
return Year == other.Year && Week == other.Week;
}
public int CompareTo(WeekOfYear other)
{
if (Year …Run Code Online (Sandbox Code Playgroud) 我的构建:
生成包含以下文件的工件(nuget 包):
cspkg 是一个有效的、可部署的包。问题在于它包含一个预转换的 web.config,因为转换发生在部署时。有关转换和变量替换的信息,请参阅 Octopus 文档以供参考。
如何使用驻留在部署包中的转换后的 web.config 覆盖 cspkg 内的 web.config?
我可以使用 powershell 和完整的 .net 框架。
或者,如果解压 cspkg、覆盖文件然后重新打包更有意义,我认为这是可以接受的。我也不知道该怎么做。
我知道Save-AzureServiceProjectPackage存在,但我无法让它运行并且缺少文档。
msbuild powershell azure octopus-deploy web.config-transform
根据针对.NET和API的Azure SDK的支持和退休信息,SDK 2.6引入了对.NET 4.6的支持。尽管姐妹文章“ 在云服务角色上安装.NET”包括显式安装.NET 4.6.2的安装脚本,暗示Web /工作者角色支持该脚本,但列出的SDK均未明确提及4.6.2 。
当我尝试将解决方案从.NET 4.5.1(使用Azure SDK 2.8)升级到.NET 4.6.2时,我还修改了RoleProperties.txt文件,其中包括以下几行:
TargetFrameWorkVersion=v4.5.1
RoleTargetFramework=v4.5.1
至
TargetFrameWorkVersion=v4.6.2
RoleTargetFramework=v4.6.2
在调用后导致以下错误cspack.exe:
不支持的.Net Framework v4.6.2
我尝试将更4.6.2改为简单4.6,但同样失败。
所以我的问题是:
cspack.exe?4.6*或是否可以安全地保留它们,4.5.1因为您cspack.exe不会抱怨?我一直在考虑让我的web scraper多线程,而不是像普通的线程(例如,线程scrape =新的线程(函数);)但是像线程池这样的东西可以有很多线程.
我的刮刀通过使用for循环来刮擦页面.
for (int i = (int)pagesMin.Value; i <= (int)pagesMax.Value; i++)
Run Code Online (Sandbox Code Playgroud)
那么我怎么能用线程池这样的多线程函数(包含循环)多线程?我以前从未使用过线程池,我见过的例子对我来说很混乱或模糊.
我已经将我的循环修改为:
int min = (int)pagesMin.Value;
int max = (int)pagesMax.Value;
ParallelOptions pOptions = new ParallelOptions();
pOptions.MaxDegreeOfParallelism = Properties.Settings.Default.Threads;
Parallel.For(min, max, pOptions, i =>{
//Scraping
});
Run Code Online (Sandbox Code Playgroud)
会有用还是我弄错了?