我正在为我们的MSSQL项目使用SSDT(和sqlproj).发布到每个环境时,我们需要设置一些变量.
这在我们为所有变量赋值的大多数环境中都很有用,但是当我们发布到我们的实时数据库时,我希望能够使DomainPrefix成为空白字符串.
当我尝试更改Live.profile.xml以将DomainPrefix设置为无值时,我收到错误:"生成部署计划期间发生错误.部署无法继续.缺少以下SqlCmd变量的值:DomainPrefix."
这就是我希望Live.profile.xml看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
<PropertyGroup>
<TargetDatabaseName>DB_NAME</TargetDatabaseName>
<DeployScriptFileName>DB_NAME.sql</DeployScriptFileName>
<TargetConnectionString>CONNECTION_STRING</TargetConnectionString>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="DomainPrefix">
<Value></Value>
</SqlCmdVariable>
<SqlCmdVariable Include="Environment">
<Value>live</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何将SqlCmdVariable设置为空值或使其成为可选变量?
使用:
我目前正在编写一个Admin MVC 3站点,每个用户只能访问该站点的某些部分.
我的站点区域与用户角色相同,所以我想要做的是在每个区域放置AuthorizeAttribute,使用区域名称作为角色中的参数.
到目前为止,当我对每个区域的检查进行硬编码时,我已经开始工作了,但是我想循环遍历所有区域并应用授权过滤器.(我使用它作为我的自定义FilterProvider - http://www.dotnetcurry.com/ShowArticle.aspx?ID=578)
到目前为止我的代码("Gcm"是我的一个领域,也是一个角色):
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// for all controllers, run AdminAuthorizeAttribute to make sure they're at least logged in
filters.Add(ObjectFactory.GetInstance<AdminAuthorizeAttribute>());
AdminAuthorizeAttribute gcmAuthroizeAttribute = ObjectFactory.GetInstance<AdminAuthorizeAttribute>();
gcmAuthroizeAttribute.Roles = "Gcm";
var provider = new FilterProvider();
provider.Add(
x =>
x.RouteData.DataTokens["area"] != null && x.RouteData.DataTokens["area"].ToString() == "Gcm"
? gcmAuthroizeAttribute
: null);
FilterProviders.Providers.Add(provider);
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何获得我的应用程序的所有区域,所以我可以循环它们,而不是硬编码每个区域?
或者,如果有人对如何授权每个区域有更好的了解,那将是值得赞赏的.
谢谢你的帮助Saan
asp.net-mvc filter asp.net-mvc-areas authorize-attribute asp.net-mvc-3
我正在更改我们的身份验证实现以使用Owin的MVC5 ASP.NET身份.
但是,我们需要将我们的登录与同一域中的其他链接应用程序和网站集成.我们目前通过在多个子域之间共享应用程序之间的cookie来实现此目的.Cookie采用非常特定的格式和加密算法,可以使用各种应用程序和技术(即并非所有应用程序和技术都在.NET或同一服务器上).
我发现在App_Start ConfigureAuth.cs中你可以设置app.UseCookieAuthentication来指定cookie名称和cookie子域的内容(例如跨子域的ASP.NET Identity Cookie).
这是一个非常好的开始,但我还需要将cookie的实际值更改为特定格式和加密算法.
有谁知道如何自定义用于创建和读取cookie的值和加密类型?
谢谢你的帮助,Saan
我的公司有多个站点,它们引用相同的DB和Core代码库.然后我们有一个管理数据的CMS.
在Core库中,我有一个Site类,它包含有关每个站点的一堆基本信息.这是我对它的流畅映射.
using Core.Model; // Where Site class exists
namespace Core.Repository.NHibernate.Mappings
{
public class SiteMapping : ClassMap<Site>
{
public SiteMapping()
{
Table("f_site");
Id(x => x.Id, "f_site_id").GeneratedBy.Identity();
Map(x => x.Domain, "domain_name").Not.Nullable();
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为CMS的一部分,我们会记录谁编辑了什么以及何时编辑.但我想只在CMS中引用Log类和映射,而不是在我的核心代码中,因为人们只能通过CMS编辑信息.
这是我当前流向Log类的流程映射,它引用了Site类.
using Core.Model; // where Site class exists
using Cms.Model; // where Log and CmsUser classes exists
namespace Cms.Repository.NHibernate.Mappings
{
public class LogMapping : ClassMap<Log>
{
public LogMapping()
{
Table("f_log");
Id(x => x.Id, "f_log_id").GeneratedBy.Identity();
Map(x => x.Message, "message");
Map(x => x.LogType, "d_log_type_id").CustomType<LogType>();
Map(x => x.LogOperation, "d_log_operation_id").CustomType<LogOperation>(); …Run Code Online (Sandbox Code Playgroud) nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping
asp.net-mvc ×2
asp.net ×1
c# ×1
cookies ×1
filter ×1
nhibernate ×1
sql-server ×1
sqlcmd ×1
sqlpackage ×1
sqlproj ×1