我正在使用James Montemagno的媒体插件来拍照.
出于某种原因,只有在手机上运行应用程序时,拍照时,缩略图才能在TestFolder中正确显示,但它们显示为空文件.
在模拟器中运行时,图像正确显示.
这是我的代码:
public async Task<MediaFile> TakePhoto() {
MediaFile result = null;
await CrossMedia.Current.Initialize();
if (CrossMedia.Current.IsCameraAvailable && CrossMedia.Current.IsTakePhotoSupported) {
// Supply media options for saving our photo after it's taken.
var mediaOptions = new Plugin.Media.Abstractions.StoreCameraMediaOptions {
SaveToAlbum = true,
Directory = "TestFolder",
Name="test.jpg"
};
// Take a photo of the business receipt.
result = await CrossMedia.Current.TakePhotoAsync(mediaOptions);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:
简而言之,由于某些原因,Media插件无法在我的手机上运行(华为P8 Lite).我在GitHub上尝试了这个示例:(用法)
https://github.com/jamesmontemagno/MediaPlugin
Run Code Online (Sandbox Code Playgroud)
照片确实显示在模拟器中但不在手机上(相机打开并拍照).如上所述,如果我访问相册文件夹,则会出现空缩略图.
编辑2
这是android清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="15" />
<application android:label="MediaPluginTests.Droid"></application>
<uses-permission …Run Code Online (Sandbox Code Playgroud) 我目前正在开发Visual Studio 2010安装项目,并想知道以下是否可行:
1)以默认表单不显示的方式运行安装项目,而是显示我自己的自定义表单,订阅设置项目事件.这样我就会显示安装消息并增加我自己的进度条.
2)如果可能1,我需要一种方法来指定默认位置.
3)我有一个单独的库项目,我在安装处理程序中有一个自定义安装类(继承自"System.Configuration.Install.Installer")我希望能够显示自定义窗体,并控制选择由用户制作.我想通过添加对system.windows.forms的引用是可能的,但这是正确的方法吗?如果我无法隐藏默认安装表单,这些自定义表单将显示在默认安装表单上,我认为它看起来太棒了.
建议,链接等赞赏谢谢!
*更新1*
我可以从c#代码中启动.msi,还可以传入一个值.?
这个人在这里做什么: 链接
但是传入一个值...然后从我的自定义安装类中,我会根据此值采取操作.
更新2
好像我可以: 链接代码项目
更新3
我正在考虑做以下事情,我将开始使用winforms应用程序进行测试.
1)启动winforms应用程序.
2)进行一些webService调用,显示数据,用户进行选择.
3)根据更新1中的链接,启动过程(静默模式)和每个更新2,传入选定的值.
4)使用一些跨进程事件机制(WCF),以便我的自定义安装类可以通知我的表单,其运行的不同步骤和更新进度条和消息.
我如何申请!重要的是以下syle:
font-family: "Trebuchet MS" , Verdana, Helvetica, Sans-Serif;
Run Code Online (Sandbox Code Playgroud)
我试过这个,但不起作用:
font-family: "Trebuchet MS" , Verdana, Helvetica, Sans-Serif !important;
Run Code Online (Sandbox Code Playgroud) 我正在尝试将facebook身份验证与asp.net站点集成.
因此,如果用户决定在网站注册,则可以使用他们的Facebook凭据进行注册.
我目前正处于我拥有facebook访问令牌和用户详细信息的地步,并且不确定我应该如何离开这里.
该网站使用asp.net会员授权.
这是我认为在新用户决定注册的情况下应该发生的事情:(但不确定这是否可行)
0)用户访问该网站并决定使用他们的Facebook凭据进行注册.
1)用户提供他们的凭证,我收到访问令牌及其用户信息.
2)我将此信息存储在我的数据库中,并使用我收到的数据创建一个asp.net成员资格用户.(此时我必须生成密码).
3)将用户登录到站点,以便他可以自由导航.
如果我在正确的道路上以及如何生成密码,我将不胜感激.(我正在考虑将电子邮件和facebook userId结合起来,检索哈希和商店.)
谢谢
更新1
我发现他们建议使用这个问题:
我目前正在编写ac#application,它将位于两个现有应用程序之间.我所知道的第二个应用程序是它处理第一个应用程序生成的文件.第一个应用程序是用Cobol编写的.
步骤:1)Cobol应用程序,将一些文件和副本写入目录.2)第二个应用程序选择这些文件并处理它们.
我的C#应用程序将介于1)和2)之间.它必须拿起1)生成的文件,读取它,修改它并保存它,以便应用程序2)不知道我甚至在那里.
我有一些问题.
我试过用这种方式读取文件,但它仍然不可读:
码:
string ss = @"filename";
using (FileStream fs = new FileStream(ss, FileMode.Open))
{
StreamReader sr = new StreamReader(fs);
string gg = sr.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
此外,如果我找到一种方法使其可读(使用某种编码技术),我担心当我再次保存文件时,我可能会改变它的原始格式.
有什么想法吗?建议?
有人可以帮我理解"冒充"的概念吗?
我理解的方式是,当模拟发生时,代码代表某些身份执行.
因此,对于网页,只要禁用模拟,网页将始终在其配置的帐户下运行.
如果已启用,我可以"覆盖"其默认帐户并设置我希望运行Web应用程序的帐户.
因此,如果我使用的是IIS7,并且我有以下内容:
- 将身份设置为自定义帐户"user1"的应用程序池.
- 一个asp.net网站,其应用程序池设置为上面的一个,并且禁用了模拟.
- 启用Windows身份验证.
我还有以下代码:
IIdentity ii = Thread.CurrentPrincipal.Identity;
IIdentity iii = Page.User.Identity;
如果我访问该页面,我会被要求提供Windows凭据,我会介绍'user2'凭据.
由于假冒被禁用,我希望IIdentity名称为'user1',它不是'user2'.
有人可以帮我理解发生了什么吗?我想我完全误解了"冒充"的概念.
谢谢
更新1
我搜索了一段时间后遇到了这个链接:http: //msdn.microsoft.com/en-us/library/aa302377.aspx
似乎有三个IIdentity对象.
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity i2 = WindowsIdentity.GetCurrent();
从链接我了解到:
HttpContext.Current.User.Identity:表示请求页面的当前用户.
Thread.CurrentPrincipal.Identity:当前正在执行该线程的标识.我想这个标识将是当前Web请求运行的标识,它的asp.net角色将定义用户在应用程序中可以做什么和不能做什么.
我想大多数时候HttpContext.Current.User.Identity和Thread.CurrentPrincipal.Identity都是同一个用户,但是对于某些情况我觉得请求页面的用户和Thread.CurrentPrincipal.Identity可能不同.
然后是:WindowsIdentity i2 = WindowsIdentity.GetCurrent();
链接说:"WindowsIdentity = WindowsIdentity.GetCurrent(),它返回当前正在执行的Win32线程的安全上下文的标识."
在做了一些允许禁用"模拟"的测试之后,对于我当前的场景,我发现这是被模拟的身份.
如果我没有冒充,'WindowsIdentity.GetCurrent();' 将在应用程序池中反映已配置的用户,如果我进行模拟,则身份将更改为我在web.config中设置的身份:
<identity impersonate="true" password="**" userName="****" />
更新2
如果我将web.config设置为:
<identity impersonate="true" />
WindowsIdentity.GetCurrent()在用户发出请求时被模拟:
HttpContext.Current.User.Identity
Thread.CurrentPrincipal.Identity
WindowsIdentity.GetCurrent()
是同一用户,请求页面的用户.
嗨,
我在尝试使用FB C#SDK注销facebook时遇到问题.
这是我的测试样本
var oauth = new FacebookOAuthClient();
oauth.AppId = fbSection.AppId;
string bbc = @"http://www.bbc.co.uk";
var logoutParameters = new Dictionary<string, object> {{ "next", bbc }} ;
this.NavigateUrl = oauth.GetLogoutUrl(logoutParameters).AbsoluteUri;
Run Code Online (Sandbox Code Playgroud)
问题是它总是重定向到:
http://m.facebook.com/
Run Code Online (Sandbox Code Playgroud)
我试图在这种情况下重定向到外部网站bbc.co.uk,因为在第一种情况下我尝试重定向到localhost并遇到了同样的问题.
我真的不想实现一个javascript解决方案,因为我已经实现了我的登录功能服务器端.
任何建议非常感谢.
我最近开始研究需要一些改进和重组的 Win Forms 应用程序。将来可能会完成应用程序的 WPF 版本,我正在考虑将 Win Forms 应用程序重组为 MVVM 模式。目的是在开发 WPF 时,我只需专注于创建 WPF 视图并重用以前版本的代码。
我查看了一些关于使用 MVVP 模式开发 Win Forms 应用程序的帖子,似乎确实可以使用该模式开发 Win Forms 应用程序。
我想知道这种方法是否可取,如果将现有的 Win Forms 应用程序重构为 MVVM 模式会减轻开发 WPF 版本时的工作负载。
嗨,我正在阅读"C#中的线程化"教程.它提到的一件事是:
"CLR为每个线程分配自己的内存堆栈,以便局部变量保持独立"
还有这个例子:
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
for (int i = 0; i < 20; i++) {
Thread t = new Thread(() => {
Console.WriteLine(i);
});
t.Start();
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
}
输出:1 2 2 4 6 8 10 10 10 10 12 12 14 15 17 18 18 20 20
所以我理解这里发生的事情的方式是:
作为"i"整数,我的猜测是新线程将在其内存堆栈中拥有自己的副本.然后将值打印到控制台.但是结果显示,它跳过的值从10跳到12或12到14.所以新线程是否正在接收对i的引用?但是如果"i"是一个整数,则新线程不应该在其内存堆栈中存储新值,而不是看起来像i的引用.
还有为什么有重复值?它的打印次数分别是2,10,12,18,20.
谢谢.
在C#中,我可以像这样声明一个数组变量
object[] Parameters;
Run Code Online (Sandbox Code Playgroud)
并像这样初始化它:
Parameters = new object[20];
Run Code Online (Sandbox Code Playgroud)
在Visual Basic中,声明和初始化数组很简单:
Dim Parameters(19) As Object
Dim Parameters As Object(19) ' Alternative syntax
Run Code Online (Sandbox Code Playgroud)
我如何初始化已在VB.NET中声明的数组变量?
Parameters = New Object(19) 不起作用.
例如,我如何将以下内容翻译成VB.NET?
int value = 20;
object[] Parameters;
if (value > 10)
{
Parameters = new Object[20];
}
Run Code Online (Sandbox Code Playgroud)