有人在将域映射到MVC区域方面有经验吗?
这是我们的情况:
旧系统(仍然有效但很快将重定向到新商店):
www.example.com - 我们的主要网站,我们发送流量
store.example.com - 我们的商店网站是一个完全独立的网站,在谷歌索引
新系统:
www.example.com - 与以前相同的网站
www.example.com/store - 新商店网站 - 内置于ASP.NET MVC区域
由于商店是一个单独的域,谷歌会在搜索结果中为其指定一个单独的条目.我想在将来保留这个好处,但想知道是否有一个很好的方法将域(store.example.com)映射到MVC区域,或者它是否会比它的价值更麻烦.
PS.我不是想保留现有的索引 - 它是一个完全独立的商店,所以这是不可能的.我只想重定向到新商店中的相应页面.我只是试图不为了SEO目的而失去两个域的好处.
如何完成Brad Wilson的帖子中所述的"模型级"验证:
最后,如果您希望验证可以访问多个属性,那么将其作为模型级验证(以便它将整个模型作为模型参数,而不是单个单独的属性值).
来自http://forums.asp.net/p/1457591/3650720.aspx
我试着做以下事情
[MyCustomValidation("SomeStuff")]
public class MyClass
{
// properties
}
Run Code Online (Sandbox Code Playgroud)
断点位于触发器的IsValid
覆盖中MyCustomValidation
,代码只是继续.MyCustomValidation
工作构造函数中的断点,但之后没有任何内容.
这不是model-level validation
指的是什么?
dirtygopher链接到http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html显示模型验证,唯一的问题是验证属性被放置在父类的子属性上.
validation-attributes
正如我在上面的例子中演示的那样,我正在寻找一种直接放在课堂上的方法.
在我的ASP.NET MVC应用程序中,我有以下设置:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;extras"/>
Run Code Online (Sandbox Code Playgroud)
我已经引用位于extras
视图中文件夹中的程序集,它们已经完美地工作(使用<%@ Import Namespace="myNameSpace" %>
).
我的问题
extras
包含myNameSpace
较新版本的文件夹中的程序集?(我收到一个错误,说组件在另一个程序中"打开")我的Web应用程序解决方案包含3个项目:
我想用Ninject来管理的生命周期DataContext
由产生Entity Framework
的Database Layer
.
业务逻辑层由引用存储库(位于数据库层)的类组成,我的ASP.NET MVC应用程序引用业务逻辑层的服务类来运行代码.每个存储库都MyDataContext
从实体框架创建对象的实例
知识库
public class MyRepository
{
private MyDataContext db;
public MyRepository
{
this.db = new MyDataContext();
}
// methods
}
Run Code Online (Sandbox Code Playgroud)
业务逻辑类
public class BizLogicClass
{
private MyRepository repos;
public MyRepository
{
this.repos = new MyRepository();
}
// do stuff with the repos
}
Run Code Online (Sandbox Code Playgroud)
MyDataContext
尽管从Web App到数据层的冗长依赖链,Ninject会处理生命周期吗?
根据这篇关于中等信任的MSDN文章,在中等信任下:
FileIOPermission受到限制.这意味着您只能访问应用程序的虚拟目录层次结构中的文件.您的应用程序被授予应用程序虚拟目录层次结构的读取,写入,附加和路径发现权限.
但是,对于我当前的托管服务提供商在中等信任下运行应用程序,当我尝试在应用程序的根文件夹中读取/写入文件时,我收到access to path 'myfile.xml' denied
错误.
使用以下代码读取此文件
XElement file = XElement.Load(HttpContext.Current.Server.MapPath("~/myfile.xml"));
Run Code Online (Sandbox Code Playgroud)
更新完整错误:
对"C:\ WebSites\mywebsite\myfile.xml"路径的访问被拒绝.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.UnauthorizedAccessException:拒绝访问路径"C:\ WebSites\mywebsite\myfile.xml".
ASP.NET无权访问所请求的资源.考虑将资源的访问权限授予ASP.NET请求标识.ASP.NET具有基本进程标识(IIS 5上通常为{MACHINE}\ASPNET,IIS 6和IIS 7上为网络服务,IIS 7.5上已配置的应用程序池标识),如果应用程序未模拟,则使用该标识.如果应用程序模拟通过,则标识将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户.
要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,选择"属性",然后选择"安全"选项卡.单击"添加"以添加适当的用户或组.突出显示ASP.NET帐户,并选中所需访问的框.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[UnauthorizedAccessException:拒绝访问路径'C:\ WebSites\mywebsite\myfile.xml'.]
System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)+12892935 System.IO.FileStream.Init(String path, FileMode模式,FileAccess访问,Int32权限,Boolean useRights,FileShare共享,Int32 bufferSize,FileOptions选项,SECURITY_ATTRIBUTES secAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath)+2481
System.IO.FileStream..ctor(String path,FileMode mode, FileAccess访问,FileShare共享,Int32 bufferSize,FileOptions选项,字符串msgPath,布尔bFromProxy)+229 System.IO.FileStream..ctor(字符串路径,FileMode模式,FileAccess访问,FileShare共享)+102
System.Xml.XmlWriterSettings.CreateWriter(String outputFileName)+5224496
System.Xml.Linq.XElement.Save(String fileName,SaveOptions options)+108
mesoBoard.Services.SiteConfig.UpdateCache()+1971 mesoBoard.Web.MvcApplication.OnApplicationStarted( )+62 Ninject.Web.Mvc.NinjectHttpApplication.Application_Start()+604[HttpException(0x80004005):拒绝访问路径'C:\ WebSites\mywebsite\myfile.xml'.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+3985477 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS( IntPtr appContext,HttpContext context,MethodInfo [] handlers)+191
System.Web.HttpApplication.InitSpecial(HttpApplicationState state,MethodInfo [] handlers,IntPtr appContext,HttpContext context)+325 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr …
我目前有一些过滤器和消息处理程序,它们将值添加到请求属性中(即通过HttpRequestMessage.Properties.Add
)。我想在使用Ninject的控制器的构造函数注入中使用这些值。如何使用Ninject访问当前请求对象?
在ASP.NET MVC中,我可以HttpContext.Current
在Kernel.Bind<>().ToMethod()
匿名函数中使用。Web API没有静态对象,因此我想避免创建一个静态对象。
我正在查看我在C#中编写的一段代码:
if(string.IsNullOrEmpty(param1) && string.IsNullOrEmpty(param2) && string.IsNullOrEmpty(param3))
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
并决定使其更具可读性/简洁性
if(string.IsNullOrEmpty(param1+param2+param3))
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但看着它我忍不住畏缩.你对此有何看法?你有没有做过这样的事情,你是否适用它?
注意:此行之前的代码将通过添加特定项来操作集合,具体取决于param(param1,param2,param3)是否为空.此if语句用于验证/错误处理.
我正在尝试将Ninject与我的ASP.NET MVC 3 RC应用程序结合使用.
从我发现的教程中,我应该通过设置ServiceLocator
MvcServiceLocator.SetCurrent
Run Code Online (Sandbox Code Playgroud)
在Global.asax
文件中,但我似乎无法在ASP.NET MVC 3 RC中找到它.这已被改为别的吗?
给出以下表格和数据
CREATE TABLE #temps
(
id int,
name varchar(max)
)
INSERT INTO #temps VALUES (1, 'foo')
INSERT INTO #temps VALUES (2, '')
INSERT INTO #temps VALUES (3, NULL)
Run Code Online (Sandbox Code Playgroud)
我要选择没有所有行foo
的name
列.
SELECT * FROM #temps
WHERE name <> 'foo'
DROP TABLE #temps
Run Code Online (Sandbox Code Playgroud)
为什么这只返回第2行?第3行中的名称不是foo
,应该返回.
在我们的中央服务器上创建存储库时,我是否需要创建文件夹结构trunk/branches/tags
或者Mercurial是否负责这一切?
asp.net-mvc ×4
c# ×2
ninject ×2
asp.net ×1
assemblies ×1
file-io ×1
iis ×1
medium-trust ×1
mercurial ×1
seo ×1
sql-server ×1
string ×1
t-sql ×1
validation ×1