这是交易:
- Flair几乎要求Facebook应用程序 -
我正在努力学习Facebook平台
因此,我写了一个小巧的Facebook应用程序,将你的Flair嵌入到你个人资料一侧的方框中. 如果您对Facebook感兴趣 ; 请注意,这是一项非常重要的工作,容易发生变化并且有一大堆粗糙的边缘.
但是,我没有一种优雅的方式来说明这是"这是我的Stackoverflow配置文件"来自这个极简的应用程序.我目前的解决方案最能证明这一形象.坦率地说,这是愚蠢的; 并没有什么可以阻止冒充.
没有OpenID的经验,我想知道是否有某种方式(以及这种方式的一些例子)让用户向第三方提供他们的Stackoverflow标识?
我用这个:
<TextBox x:Name="Test"/>
<TextBlock Text="{Binding SelectionStart, ElementName=Test}"/>
Run Code Online (Sandbox Code Playgroud)
但它总是显示0.
我该如何对待它?
谢谢.
我正在尝试通过Windows 7的IAudioSessionManager2 COM接口(与IAudioSessionNotification结合)监视新的音频会话.目前,IAudioSessionNotification :: OnSessionCreated()从未被调用,我已经没有想到为什么.
代码注册自定义IAudioSessionNotification:
#define SAFE_RELEASE(comObj) \
if(comObj != NULL) \
{ (comObj)->Release(); comObj = NULL; }
BOOL success = false;
HRESULT res;
IClassFactory* pFactory;
IMMDevice* pDevice;
IMMDeviceEnumerator* pEnumerator;
SESSION_LISTENER = NULL;
SESSION = NULL;
res = CoInitialize(NULL);
if(res != S_OK && res != S_FALSE)
return false;
res = CoGetClassObject(CLSID_CustomAudioFactory, CLSCTX_ALL, NULL, __uuidof(IClassFactory), (void**)&pFactory);
if(res != S_OK) goto Exit;
res = pFactory->CreateInstance(NULL, CLSID_CustomAudioNotifications, (void**)&SESSION_LISTENER);
if(res != S_OK) goto Exit;
res = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnumerator);
if(res != …Run Code Online (Sandbox Code Playgroud) 我已经编写了这个克隆方法,当Employee类的父类是抽象的,而父类中的clone()方法是abstract.I想用这个代码复制Employee的对象的原始数据类型,而不是复制每个原始数据单独键入,但此代码与我调用clone()方法的行有问题.(此代码在Employee类中)
public Object clone() {
Object obj = new Object();
Object object = obj.clone(); //Emphasis here
return object;
}
Run Code Online (Sandbox Code Playgroud)
错误是:Object类型的方法clone()不可见.
但是我的Employee类在类层次结构中,可以访问Object类中的protected clone()方法.
这是我简单的Employee类:
public class Employee extends Person implements Cloneable {
private int ID;
public Employee() {
ID = 0;
}
public void setID(int ID) {
this.ID = ID;
}
public int getID() {
return ID;
}
public Object clone1() throws CloneNotSupportedException {
try {
Object obj = new Object();
Object object = obj.clone();
return object;
} catch (CloneNotSupportedException ex) …Run Code Online (Sandbox Code Playgroud) 我正在将ASP.NET项目从.NET 3.5迁移到.NET 4.
如果我在web.dev下调试(即在Visual Studio [2010]中),一切都很好用,但是当我尝试在IIS7 [.5]下运行时,调试器无法附加.直接在IIS下运行项目只会导致它返回403s(没有子代码,因此没有多少帮助).
我通过获取当前(和工作!).NET 3.5站点并将AppPool更改为具有.NET 4运行时的站点来设置站点.我已经确认所有文件权限都是Kosher(至少从.NET 3.5的角度来看).我觉得好像我在这里错过了一些配置步骤......
尝试连接调试器时的错误消息只是"无法在Web服务器上启动调试".这不是世界上最有用的错误消息.
直接附加到关联的w3wp进程强烈建议应用程序永远不会成功启动.
基本问题是,对于在IIS下运行的项目,我如何影响从.NET 3.5到.NET 4的这种更改?
我一直在熟悉C#8和.NET Core 3.0中(计划要添加的)某些内容,并且不确定实现IAsyncDisposable的正确方法(在撰写本文时,此链接实际上没有任何指导) )。
特别是,我不清楚在未明确处理实例的情况下该怎么办-也就是说,该实例未包装在中async using(...),.DisposeAsync()也未明确调用。
我首先想到的是做与实现IDisposable时相同的事情:
DisposeAsync()实现调用DisposeAsync(bool disposing)带有disposing: true~MyType()),该终结器调用DisposeAsync(disposing: false)DisposeAsync(bool disposing)实际上释放和/或处置所有内容,并抑制if的终结disposing == true。我担心的是,没有什么可以等待DisposeAsync(bool)finalizer 的结果,而显式地等待finalizer似乎真的很危险。
当然,“只是泄漏”似乎也不理想。
为了具体起见,这里有一个(简化的)示例类,它确实有一个终结器:
internal sealed class TestAsyncReader: IAsyncDisposable
{
private bool IsDisposed => Inner == null;
private TextReader Inner;
internal TestAsyncReader(TextReader inner)
{
Inner = inner;
}
// the question is, should this exist?
~TestAsyncReader()
{
DisposeAsync(disposing: false);
}
private …Run Code Online (Sandbox Code Playgroud) 我正在使用事件作为游戏模型的一部分,并且为了扩展性和代码"地点性"的缘故,我需要能够否决大多数行为.
更清楚的是,几乎每种具有副作用的方法都采用以下形式:
public event TryingToDoSomethingHandler TryingToDoSomething;
public event SomethingHappenedHandler SomethingHappened;
/*
* Returning true indicates Something happened successfully.
*/
public bool DoSomething(...)
{
//Need a way to indicate "veto" here
TryingToDoSomething(...);
//Actual do it
SomethingHappened(...);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是TryingToDoSomething(...)能够指示已注册的事件处理程序对象(通过返回false,修改out参数或其他内容).所以代码在道德上等同于:
/*
* Returning true indicates Something happened successfully.
*/
public bool DoSomethingImproved(...)
{
//Pretty sure multicast delegates don't work this way, but you get the idea
if(!TryingToDoSomething(...)) return false;
//Actual do it
SomethingHappened(...);
return true;
}
Run Code Online (Sandbox Code Playgroud)
在C#/ .NET中是否有可接受的或标准的方法来执行此操作?
从FireFox扩展的上下文...
是否有某种方式可以通知back/forward/goto/reload/etc. "历史事件"?我不想找到取消或改变它们的方法,只是为了让它们意识到它们.
到目前为止,我最好的解决方案是挂钩负责触发历史导航的UI元素(菜单项和按钮).除了最严格控制的FireFox安装之外,这显然不能很好地工作,因为它只需要一个扩展:
gBrowser.webNavigation.goBack()
Run Code Online (Sandbox Code Playgroud)
...毁了我的一天,更不用说网页自己玩历史游戏了.
构建一个OpenId提供程序,我遇到了一个奇怪的问题,只有Stack Exchange站点会接受它.
发现工作正常,看着我发送的日志流量(我看起来像什么)回复有效的响应.
奇妙的是,没有合规性测试*告诉我什么是错的,大多数通过OpenId提供登录的网站也没有给你任何有用的错误消息.Stack Overflow给出了一些,但它似乎是唯一接受我的断言的依赖方,所以......是的.
无论如何,如果我尝试登录(例如)Typepad,我最终会重定向回到类似的网址
https://www.typepad.com/secure/services/signin/openid?openid-check=1&archetype.quickreg=1&tos_locale=en_US&portal=typepad&oic.time=1303249620-9db5665031c9c6b36031&openid.claimed_id=https://example/user/8c481fb7-1b5c-4e50-86b5-xxxxxxxxx&openid.identity=https://example/user/8c481fb7-1b5c-4e50-86b5-xxxxxxxxx&openid.sig=hoaxQrsN4BBg6H8kp50NoQwpHmcO96BBe+jB3oOP2UA=&openid.signed=claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.alias3,alias3.mode&openid.assoc_handle={634388464235195799}{oqMrOA==}{32}&openid.op_endpoint=https://example/openid/provider&openid.return_to=https://www.typepad.com/secure/services/signin/openid?openid-check=1&archetype.quickreg=1&tos_locale=en_US&portal=typepad&oic.time=1303249620-9db5665031c9c6b36031&openid.response_nonce=2011-04-19T21:47:03Z1aa4NZ48&openid.mode=id_res&openid.ns=http://specs.openid.net/auth/2.0&openid.ns.alias3=http://openid.net/srv/ax/1.0&openid.alias3.mode=fetch_response
为(稍微)更容易阅读打破了:
openid-check=1
archetype.quickreg=1
tos_locale=en_US
portal=typepad
oic.time=1303249620-9db5665031c9c6b36031
openid.claimed_id=https://example/user/8c481fb7-1b5c-4e50-86b5-xxxxxxxxx
openid.identity=https://example/user/8c481fb7-1b5c-4e50-86b5-xxxxxxxxx
openid.sig=hoaxQrsN4BBg6H8kp50NoQwpHmcO96BBe+jB3oOP2UA=
openid.signed=claimed_id,identity,assoc_handle,op_endpoint,return_to,response_nonce,ns.alias3,alias3.mode
openid.assoc_handle={634388464235195799}{oqMrOA==}{32}
openid.op_endpoint=https://example/openid/provider
openid.return_to=https://www.typepad.com/secure/services/signin/openid?openid-check=1
archetype.quickreg=1
tos_locale=en_US
portal=typepad
oic.time=1303249620-9db5665031c9c6b36031
openid.response_nonce=2011-04-19T21:47:03Z1aa4NZ48
openid.mode=id_res
openid.ns=http://specs.openid.net/auth/2.0
openid.ns.alias3=http://openid.net/srv/ax/1.0
openid.alias3.mode=fetch_response
Run Code Online (Sandbox Code Playgroud)
这是用户的XRDS(因为发现似乎没问题).
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS
xmlns:xrds="xri://$xrds"
xmlns:openid="http://openid.net/xmlns/1.0"
xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<LocalID>https://example/user/8c481fb7-1b5c-4e50-86b5-xxxxxxxxx</LocalID>
<Type>http://openid.net/extensions/sreg/1.1</Type>
<Type>http://axschema.org/contact/email</Type>
<URI>https://example/openid/provider</URI>
</Service>
<Service priority="20">
<Type>http://openid.net/signon/1.0</Type>
<Type>http://openid.net/extensions/sreg/1.1</Type>
<Type>http://axschema.org/contact/email</Type>
<URI>https://example/openid/provider</URI>
</Service>
</XRD>
</xrds:XRDS>
Run Code Online (Sandbox Code Playgroud)
如果你深入了解TypePad的html,你会发现以下错误信息
<!-- Error Code: unexpected_url_redirect -->
Run Code Online (Sandbox Code Playgroud)
......这就是我用它们作为例子的原因.有点无用,但它的东西.
这段代码非常基于dotNetOpenAuth附带的示例MVC项目,SendAssertion实现是我怀疑生病的地方.
protected ActionResult SendAssertion(IAuthenticationRequest authReq)
{
// Not shown: redirect to a …Run Code Online (Sandbox Code Playgroud)