小编Pat*_*mes的帖子

我是否可以强制Visual Studio仅对我的生产发布配置文件使用发布版本配置?

我在Visual Studio 2010中为我的项目定义了两个发布配置文件:一个使用ftp进行生产,另一个使用我的本地文件系统进行调试和日常开发.

我有适用于调试和发布构建配置的web.config转换.我的项目是一个Facebook应用程序,我根据部署设置应用程序ID和密码.

我希望能够强制执行一条规则,以便无法将生产ftp发布配置文件与调试版本配置一起使用.这种组合将是灾难性的,完全打破了我的生产环境.

我该如何执行此规则?

我对替代部署方法持开放态度,但我很满意现在的简单性,除了在推送到生产时可能忽略构建配置.

deployment build-process build visual-studio-2010

7
推荐指数
2
解决办法
2680
查看次数

ASP.NET MVC 3简单可靠的移动设备检测:使用51degrees.mobi还是去原生?

在我的ASP.NET MVC 3 Web应用程序中,我将覆盖自定义视图引擎中的视图名称,以呈现针对非平板电脑移动设备优化的不同视图.

我想要执行此视图覆盖的所有内容都是Request.Browser.IsMobileDevice设备的本机显示宽度的准确值.

对于这个简单的用例,51degrees.mobi感觉非常沉重和复杂.也许这只是我试图浏览51degrees网站上的所有示例和文档以获得简单实现的简单问题的答案.

缺席51degrees,我确实得到了Request.Browser.IsMobileDeviceRequest.Browser.ScreenPixelsWidth.我注意到对于桌面浏览器,宽度总是640,而Request.Browser.Capabilities["51Degrees.mobi"]包含值"未知" ScreenPixelsWidth.鉴于实现的服务器端性质,我想未知值更准确.

我的主要问题是:对于我的简单要求,我真的需要51度吗?

如果我不使用51degrees,是否有一些特定的浏览器示例,我将无法正确检测IsMobileDevice和屏幕宽度?例如,内置的.NET Request.Browser.IsMobile和ScreenPixelsWidth值是否会在新iPad出现时或最新的Android浏览器版本时不准确或不存在?我的网站获得了大约65%的移动用户,其中许多是使用UP.Browser等浏览器的蹩脚功能手机,所以获得正确的移动设备有点重要.

如果我使用51degrees,我是否需要始终深入查看Request.Browser.Capabilities ["51Degrees.mobi"]?或者51degrees是否覆盖/更新Request.Browser.IsMobileDevice的值以与浏览器的评估同步?显然它不会覆盖Request.Browser.ScreenPixelsWidth.

我愿意回答"你做错了,这是一种更好的方式",只要他们不建议使用MVC 4或涉及WURFL这样的付费解决方案.

asp.net-mvc mobile asp.net-mvc-3 51degrees

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

如何在使用Facebook Developer Toolkit授予offline_access后立即获得Facebook无限会话密钥

我正在使用3.0版本的Facebook Developer Toolkit来构建一个MVC iframe Facebook应用程序,并且在授予后立即获得无限会话密钥时遇到一些麻烦.

当用户首次点击我的应用程序设置View以设置他们的首选项时,他们只有来自Facebook的通常过期的会话密钥.没问题.

根据他们选择的首选项,我使用Facebook javascript客户端库FB.Connect.showPermissionDialog方法提示他们获取offline_access扩展权限.再次没问题,他们授予许可.

此时,发出新的非过期(无限)会话密钥.我需要将其保存到我的数据库中以备将来使用.问题是,我无法弄清楚如何在需要时立即获取它.包含会话信息的Facebook Cookie在更新页面刷新之前不会更新.

Facebook错误跟踪器中有一个与此相关的错误ID 6421的漏洞,但我正在寻找使用Facebook Developer Toolkit 3.0版本的服务器端解决方案.我想告诉FDT api去Facebook并获得新会议.

我知道新会议是在Facebook方面建立的.http://www.facebook.com/extern/login_status.php上有一个告密的GET,在用户授予offline_access权限后立即出现在Firebug Net面板中,并且响应时包含一些包含新的非过期的javascript会话密钥.如果我继续使用旧的到期会话密钥,我会从Facebook收到无效的会话错误.

在我的控制器中,我有以下代码:

[AcceptVerbs(HttpVerbs.Post)]
[FacebookAuthorization(IsFbml = false)]
public ActionResult Index(FormCollection collection)
{
        var api = this.GetApi();
        var userid = api.Session.UserId;
        var key = api.Session.SessionKey;
}
Run Code Online (Sandbox Code Playgroud)

这是获得旧的SessionKey,而不是新的非过期的.

如果我在GET上使用ExtendedPermissions ="offline_access"装饰我的ActionResult,强制用户在看到页面之前授予offline_access,但我不喜欢这种用户体验.我更喜欢仅在需要时提示使用javascript,并且当我使用ExtendedPermissions ="offline_access"时,javascript权限灯箱比完整页面宽度权限提示要好得多.

我也尝试拦截对我的xd_receiver的调用(我已经创建了一个View,所以我可以在其控制器中点击调试器断点并检查来自Facebook的传入请求).它在授予扩展权限期间受到攻击,但它再次引用旧的过期会话信息.

所以回顾一下,我正在寻找一种方法,使用Facebook Developer Toolkit强制从Facebook刷新会话并获得新的无限会话密钥(和秘密).

.net c# facebook

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