小编Oma*_*mar的帖子

将域映射到MVC区域

有人在将域映射到MVC区域方面有经验吗?

这是我们的情况:

旧系统(仍然有效但很快将重定向到新商店):

www.example.com - 我们的主要网站,我们发送流量
store.example.com - 我们的商店网站是一个完全独立的网站,在谷歌索引

新系统:

www.example.com - 与以前相同的网站
www.example.com/store - 新商店网站 - 内置于ASP.NET MVC区域

由于商店是一个单独的域,谷歌会在搜索结果中为其指定一个单独的条目.我想在将来保留这个好处,但想知道是否有一个很好的方法将域(store.example.com)映射到MVC区域,或者它是否会比它的价值更麻烦.

PS.我不是想保留现有的索引 - 它是一个完全独立的商店,所以这是不可能的.我只想重定向到新商店中的相应页面.我只是试图不为了SEO目的而失去两个域的好处.

iis asp.net-mvc seo domain-mapping

5
推荐指数
1
解决办法
1342
查看次数

模型级验证

如何完成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正如我在上面的例子中演示的那样,我正在寻找一种直接放在课堂上的方法.

c# validation asp.net-mvc data-annotations

5
推荐指数
1
解决办法
2284
查看次数

加载程序集时会发生什么?

在我的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" %>).

我的问题

  1. 调用该行时会发生什么?
  2. 装配在哪里?
  3. 为什么我不能覆盖位于extras包含myNameSpace较新版本的文件夹中的程序集?(我收到一个错误,说组件在另一个程序中"打开")
  4. 有没有办法在没有重新启动应用程序的情况下使用较新版本覆盖程序集?

asp.net-mvc assemblies

5
推荐指数
1
解决办法
568
查看次数

依赖注入到达多远?

我的Web应用程序解决方案包含3个项目:

  1. Web应用程序(ASP.NET MVC)
  2. 业务逻辑层(类库)
  3. 数据库层(实体框架)

我想用Ninject来管理的生命周期DataContext由产生Entity FrameworkDatabase 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会处理生命周期吗?

asp.net-mvc dependency-injection ninject

5
推荐指数
1
解决办法
553
查看次数

中等信任文件I/O权限

根据这篇关于中等信任的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 …

asp.net file-io medium-trust

5
推荐指数
1
解决办法
4073
查看次数

如何在Ninject中访问HttpRequestMessage?

我目前有一些过滤器和消息处理程序,它们将值添加到请求属性中(即通过HttpRequestMessage.Properties.Add)。我想在使用Ninject的控制器的构造函数注入中使用这些值。如何使用Ninject访问当前请求对象?

在ASP.NET MVC中,我可以HttpContext.CurrentKernel.Bind<>().ToMethod()匿名函数中使用。Web API没有静态对象,因此我想避免创建一个静态对象。

ninject asp.net-web-api

5
推荐指数
0
解决办法
273
查看次数

IsNullOrEmpty参数中的Concat字符串

我正在查看我在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语句用于验证/错误处理.

c# string

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

ASP.NET MVC 3 RC中的MvcServiceLocator在哪里?

我正在尝试将Ninject与我的ASP.NET MVC 3 RC应用程序结合使用.

从我发现的教程中,我应该通过设置ServiceLocator

MvcServiceLocator.SetCurrent
Run Code Online (Sandbox Code Playgroud)

Global.asax文件中,但我似乎无法在ASP.NET MVC 3 RC中找到它.这已被改为别的吗?

dependency-injection service-locator asp.net-mvc-3

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

SQL select不是字符串不返回NULL值

给出以下表格和数据

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)

我要选择没有所有行fooname列.

SELECT * FROM #temps
WHERE name <> 'foo'

DROP TABLE #temps
Run Code Online (Sandbox Code Playgroud)

为什么这只返回第2行?第3行中的名称不是foo,应该返回.

t-sql sql-server

4
推荐指数
2
解决办法
1135
查看次数

我是否需要在Mercurial存储库中创建trunk/branches/tags?

在我们的中央服务器上创建存储库时,我是否需要创建文件夹结构trunk/branches/tags或者Mercurial是否负责这一切?

mercurial directory-structure

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