小编Mar*_*nek的帖子

.gitignore for Visual Studio项目和解决方案

.gitignore将Git与Visual Studio Solutions(.sln)和Projects 结合使用时,我应该包含哪些文件?

git gitignore visual-studio visual-studio-2012

1115
推荐指数
17
解决办法
34万
查看次数

ASP.NET MVC,URL路由:最大路径(URL)长度

情景

我有一个应用程序,我们采用了旧的查询字符串URL结构:

?x=1&y=2&z=3&a=4&b=5&c=6
Run Code Online (Sandbox Code Playgroud)

并将其更改为路径结构:

/x/1/y/2/z/3/a/4/b/5/c/6
Run Code Online (Sandbox Code Playgroud)

我们正在使用ASP.NET MVC和(自然地)ASP.NET路由.

问题

问题是我们的参数是动态的,并且(理论上)我们需要适应的参数数量没有限制.

这一切都很好,直到我们受到以下列车的打击:

HTTP错误400.0 - 错误请求ASP.NET在URL中检测到无效字符.

当我们的URL超过一定长度时,IIS会抛出此错误.

Nitty Gritty

这是我们发现的:

这不是IIS问题

IIS确实有最大路径长度限制,但上面的错误不是这个.

了解dot iis dot net如何使用请求过滤部分"根据请求限制过滤"

如果IIS的路径太长,它将抛出404.14,而不是400.0.

此外,IIS最大路径(和查询)长度是可配置的:

<requestLimits


   maxAllowedContentLength="30000000"


   maxUrl="260"


   maxQueryString="25" 


              />
Run Code Online (Sandbox Code Playgroud)

这是一个ASP.NET问题

经过一番探讨:

IIS论坛主题:ASP.NET 2.0最大URL长度? http://forums.iis.net/t/1105360.aspx

事实证明,这是一个ASP.NET(嗯,真正的.NET)问题.

事情的核心是,据我所知,ASP.NET无法处理超过260个字符的路径.

在棺材中的钉子,这是由菲尔哈克本人证实的:

Stack Overflow ASP.NET url MAX_PATH limit问题ID 265251

问题

那么问题是什么?

问题是,这有多大的限制?

对于我的应用程序,它是一个交易杀手.对于大多数应用程序,它可能不是问题.

披露怎么样?没有提到ASP.NET路由的地方我听过这个限制的窥视.ASP.NET MVC使用ASP.NET路由这一事实使其影响更大.

你怎么看?

iis url asp.net-mvc routing asp.net-routing

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

将验证属性从域实体映射到DTO

我有一个标准的Domain Layer实体:

public class Product
{
    public int Id { get; set; }

    public string Name { get; set; }

    public decimal Price { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

它具有某种验证属性:

public class Product
{
    public int Id { get; set; }

    [NotEmpty, NotShorterThan10Characters, NotLongerThan100Characters]
    public string Name { get; set; }

    [NotLessThan0]
    public decimal Price { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经完全弥补了这些属性.这里使用的验证框架(NHibernate Validator,DataAnnotations,ValidationApplicationBlock,Castle Validator等)并不重要.

在我的客户端层,我也有一个标准设置,我不使用域实体本身,而是将它们映射到我的视图层使用的ViewModels(aka DTO):

public class ProductViewModel
{
    public int Id { get; set; }

    public string Name { get; set; } …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc domain-driven-design dto viewmodel

32
推荐指数
2
解决办法
8384
查看次数

.gitignore不了解Windows上的文件夹通配符

.gitignore在Windows上遇到了一个奇怪的问题.

我希望git忽略所有.exe文件,除了Dependencies文件夹(和所有子文件夹)中的文件.

所以我有:

.gitignore:

*.exe
!/Dependencies/**/*.exe
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.

同时,这样做:

*.exe
!/Dependencies/folder/subfolder/*.exe
Run Code Online (Sandbox Code Playgroud)

所以我想知道,我搞砸了什么,或者这是一种什么样的错误?

我在Windows(Windows 7 x64)版本1.6.5.1-preview20091022上运行msysgit

提前感谢任何输入:)

windows git msysgit gitignore

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

数据库更改管理 - 初始创建脚本,后续迁移脚本的设置

我已经有了数据库变更管理工作流程.它基于SQL脚本(因此,它不是基于托管代码的解决方案).

基本设置如下所示:

Initial/
    Generate Initial Schema.sql
    Generate Initial Required Data.sql
    Generate Initial Test Data.sql
Migration
     0001_MigrationScriptForChangeOne.sql
     0002_MigrationScriptForChangeTwo.sql
     ...
Run Code Online (Sandbox Code Playgroud)

启动数据库的过程是运行所有Initlal脚本,然后运行顺序迁移脚本.一个工具可以考虑版本控制要求等.

我的问题是,在这种设置中,保持这个是有用的:

Current/
    Stored Procedures/
        dbo.MyStoredProcedureCreateScript.sql
        ...
    Tables/
        dbo.MyTableCreateScript.sql
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

"this"是指脚本目录(由对象类型分隔),表示用于旋转当前/最新版本数据库的创建脚本.

出于某种原因,我非常喜欢这个想法,但我无法具体证明它的需要.我错过了什么吗?

优点是:

  • 对于开发和源代码控制,我们将拥有与以前相同的每个文件对象设置
  • 对于部署,我们可以通过运行Initial + Migrate或从Current /运行脚本来将新数据库实例启动到最新版本
  • 对于dev,我们不需要运行数据库实例来进行开发.我们可以在Current /文件夹上进行"离线"开发.

缺点是:

  • 对于每个更改,我们需要更新Current /文件夹中的脚本,以及创建Migration脚本(在Migration /文件夹中)

提前感谢任何输入!

database sql-server redgate dbmigrate

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

RESTORE流程是否依赖于架构?

假设我有两个数据库实例:

InstanceA - Production server
InstanceB - Test server  
Run Code Online (Sandbox Code Playgroud)

我的工作流程是首先部署新的架构更改InstanceB,测试它们,然后将它们部署到InstanceA.

因此,在任何时候,实例架构关系如下所示:

InstanceA - Schema Version 1.5
InstanceB - Schema Version 1.6 (new version being tested)
Run Code Online (Sandbox Code Playgroud)

我的工作流程的另一部分是尽可能保持数据的InstanceB新鲜.为了实现这一点,我正在进行数据库备份InstanceA并将它们应用(恢复它们)InstanceB.

我的问题是,架构版本如何影响恢复过程?

我知道我可以这样做:

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.5
Run Code Online (Sandbox Code Playgroud)

但我可以这样做吗?

Backup InstanceA - Schema Version 1.5
Restore to InstanceB - Schema Version 1.6 (new version being tested)
Run Code Online (Sandbox Code Playgroud)

如果不是,失败会是什么样子?

如果是,那么架构变更的类型是否重要?

例如,如果Schema Version 1.6从不同Schema Version 1.5的只是具有改变storec …

sql-server backup schema restore

4
推荐指数
1
解决办法
1278
查看次数