![]() |
1
129
如果在开发工作站上运行版本构建,这将没有帮助,但是条件编译可以完成这项工作。。。
更新2
有几个人提到了源于
免责声明:我还没有测试过这段代码,哪怕是一点点,而且我的VB已经相当生锈了。我只知道它是编译的。我是根据spot、queen3和Lance Fisher的建议写的。如果它不起作用,它至少应该传达总体思路,并给你一个起点。
基本上,如果当前请求是本地的(即通过localhost访问站点),则新属性将退出,而不是运行默认的SSL授权代码。您可以这样使用它:
干净多了!如果我的未经测试的代码确实有效。 |
![]() |
2
65
如果有人需要C版本:
|
![]() |
3
26
若要完全避开此问题,您也可以在本地计算机上使用IIS并使用自签名证书。IIS比内置的Web服务器更快,而且您的开发环境更像是生产环境。 |
![]() |
4
12
利用MVC过滤系统和Global.asax.cs,我假设您可以做到这一点。。。
|
![]() |
5
10
由于是ASP.Net开发服务器首先导致了您的问题,因此值得注意的是,Microsoft现在已经解决了这个问题 IIS Express Scott Hanselman在 working with SSL in IIS Express . |
![]() |
6
9
|
|
7
4
这对我很有效, 代码检查调试是否正在开发中,如果没有,则不需要ssl。 所有编辑都在中 . 加:
加:
编辑:
|
![]() |
8
3
如果您可以派生和重写,请执行该操作。如果您不能-MVC附带源代码,只需获取源代码并创建自己的[ForceHttps]属性来检查IsLocal。 |
![]() |
9
3
对于MVC 3,我添加了自己的FilterProvider(基于以下代码:
Global and Conditional Filters
|
|
10
3
经过研究,我能够通过IIS Express和重写控制器类的OnAuthorization方法(参考1)解决这个问题。我也选择了Hanselman推荐的路线(参考文献2)。然而,由于两个原因,我对这两种解决方案并不完全满意: 1.Ref#1的授权仅在操作级别有效,而不在控制器类级别有效
注#1:这是通过使用有用的函数“getConfig”实现的(参见代码) 参考文献1: http://puredotnetcoder.blogspot.com/2011/09/requirehttps-attribute-in-mvc3.html http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx ==========BaseController中的代码===================
在Web.Release.Config中,添加以下内容以清除HttpPort和HttpsPort(使用默认的80和443)。
|
![]() |
11
3
您可以在生产工作站和开发工作站上使用一种解决方案。它基于web.config中应用程序设置中的选项
然后使用 要求属性 那会照顾好你的情况。它实际上是从 除添加条件外,使用与基本方法相同的实现。
别忘了装饰 登录 AccountController中的方法
在你的房间里有这样的东西 登录 查看以便通过https发布表单。
|
![]() |
12
2
正如Joel提到的,您可以使用
|
![]() |
13
1
MVC6 正确的解决方案是使用env.IsProduction()或env.IsDevelopment()。阅读更多关于此答案背后原因的信息 how to require https only in production . 以下两种不同风格的简明答案(请参阅上面的链接以了解更多有关设计决策的信息):
Startup.cs
(属性样式):
RequireAttribute产品属性 : RequireHttpsAttribute :
|
![]() |
14
1
这对我来说是最干净的方式。在我的
或者,您可以将其设置为仅在自定义错误页打开时需要https。
|