我正在尝试创建一个ASP.NET(.NET 3.5)网站,通过Exchange Web服务连接到我们的Exchange 2010服务器,当我定义用户名,密码和域进行身份验证时,我能够连接到EWS,但我希望,如果可能,不在我的代码中包含登录详细信息.
在IIS中,我已在站点的web.config中为站点启用了集成Windows身份验证<authentication mode="Windows"/>.
以下代码是我一直在使用的代码:
svc.UseDefaultCredentials = True
svc.Credentials = New WebCredentials()
svc.Url = New Uri(svcURL)
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我收到的消息:
将请求作为没有邮箱的帐户发出时,必须为任何可识别的文件夹ID指定邮箱主SMTP地址.
当我尝试使用svc.Credentials = CredentialCache.DefaultNetworkCredentials(代替svc.Credentials = New WebCredentials())时,我收到错误消息:
无法将类型为"System.Net.SystemNetworkCredential"的对象强制转换为"Microsoft.Exchange.WebServices.Data.ExchangeCredentials".
如上所述,唯一有效的方法是通过硬编码用户登录详细信息来定义要通过身份验证的用户凭据,我宁愿不这样做: svc.Credentials = New WebCredentials("username","password","domain")
有没有人能够使用ASP.NET网站中当前登录用户的凭据对EWS进行身份验证?
我有一个带网格的WPF窗口:
<Grid Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="700*" />
<ColumnDefinition Width="190*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="220*" />
<RowDefinition Height="450*" />
<RowDefinition Height="160*" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中,我将一个stackpanel添加到第一列,第二行mainGrid,但我希望stackpanel的最大宽度为第1列的宽度 - 50px.我偶然发现了stkPanel.Width = mainGrid.ColumnDefinitions(1).Width.ToString - 50,但是这会错误:
700*不能转换为double
有没有办法获得网格列的实际宽度,因为它显示在屏幕上以使用我想要的方式,或者我是否设置填充或类似?
谢谢,
马特
我想创建一个 PowerShell 脚本,该脚本将查找在提供的目录中锁定的任何文件并返回锁定该文件的应用程序/进程。
我发现了一个脚本,它通过一个目录,当它找到一个锁定的文件时,它会停止并报告文件被锁定。
Function Test-Lock{
param(
[parameter(ValueFromPipeline=$true)]
$Path
)
Process {
if($Path.Attributes -ne 'Directory'){
$oFile = New-Object System.IO.FileInfo $Path.FullName
$locked=$false
try{
$oStream = $oFile.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
$oStream.Close()
}
catch{
write-host $Error[0]
$locked=$true
New-Object PSObject -Property @{'Path'=$Path.FullName;'Locked?'=$locked} | Select Path,Locked?
}
}
}
}
$lockedfiles=(gci C:\temp | Test-Lock)
$lockedfiles | Format-Table -auto
Run Code Online (Sandbox Code Playgroud)
这将返回:
Path Locked?
---- -------
C:\temp\ReportReq.doc True
Run Code Online (Sandbox Code Playgroud)
我不知道如何找到锁定此文件的应用程序或进程。
我一直在寻找一个解决方案.我只想在ActionBar下添加一个开关(就像在蓝牙设置中一样).我在这里发现了类似的问题,但它可能已经过时了.不管怎样,这是我的代码:
主要活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem item = menu.findItem(R.id.myswitch);
switchButton = (Switch) item.getActionView();
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_switch"
android:title="off/on"
app:showAsAction="always"
app:actionLayout="@layout/switchlayout"
app:actionViewClass="android.support.v7.widget.Switch" />
</menu>
Run Code Online (Sandbox Code Playgroud)
switchlayout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Switch
android:id="@+id/myswitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="#1E88E5" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,我总能得到:
尝试在空对象引用上调用... getActionView()'
我很困惑,因为我刚刚定义了项目之前R.id.myswitch定义的那条线,我搞砸了吗?
我是VB.NET中多线程的新手,遇到了一个问题,我希望将文本附加到后台运行的服务线程的表单上的文本框中.
我正在开发的应用程序是一个客户端/服务器监听器,我已经能够让客户端和服务器PC相互通信(通过MsgBox确认),但是我现在正努力让服务器上的服务线程附加到文本到文本框,没有任何可变的发生.
我有一个名为testDebug的表单,它调用一个类(RemoteSupport),该类执行所有握手任务并使用连接数据更新文本框.
谁能确定我哪里出错了,并指出我正确的方向?
以下是我的代码:表单有一个名为txtOutput的文本框,以下是来自remoteSupport类的
Dim outMessage As String = (encoder.GetString(message, 0, bytesRead))
MsgBox(outMessage, MsgBoxStyle.Information, "MEssage Received")
If outMessage IsNot Nothing Then
If testDebug.InvokeRequired Then
' have the UI thread call this method for us
testDebug.Invoke(New UpdateUIDelegate(AddressOf HandleClientComm), New Object() {outMessage}) '
Else
testDebug.txtOutput.AppendText(outMessage)
End If
'RaiseEvent MessageReceived(outMessage) // a previous attempt to use custom events
End If
Run Code Online (Sandbox Code Playgroud)
我不确定调用方法是否是理想的解决方案,或者如果自定义事件是,我花了一些时间试图让自定义事件工作,但这些也没有用.
// In the RemoteSupport class
Public Delegate Sub MessageReceivedHandler(ByVal message As String)
Public Shared Event MessageReceived As MessageReceivedHandler
// Located throughout …Run Code Online (Sandbox Code Playgroud) 我有一个Windows窗体应用程序,将打开其他窗体,但只会显示窗体几秒钟(用户可配置).我通常会做类似threading.thread.sleep(n)的事情,但是当这样做时,表单控件不会仅加载白色背景节目,而且我也一直在阅读这不是我作为用户所做的最佳实践在线程唤醒之前,不会对输入进行操作.
我遇到过使用System.Timers.Timer(n)的人,但是我很难让这个为我工作,表单只会立即打开和关闭(你只能看到一个闪存,因为表单打开然后关闭) .
我使用的代码是:
Private Shared tmr As New System.Timers.Timer
aForm.Show()
tmr = New System.Timers.Timer(aSleep * 60 * 60)
tmr.Enabled = True
aForm.Close()
Run Code Online (Sandbox Code Playgroud)
这都包含在传递表单和定义的运行时的Private子中.
我的目的是让主应用程序从任务栏运行,然后任务栏调用将在指定时间段内显示的表单之一,关闭表单,然后调用另一个表单.
有没有能够指出我正确的方向为什么表格打开然后关闭而不通过定义的运行时间(我已经测试了10秒),或者有更好的方式来做我正在寻找的东西?
非常感谢您的帮助.
马特
vb.net ×2
.net-3.0 ×1
android ×1
asp.net ×1
grid ×1
java ×1
powershell ×1
stackpanel ×1
width ×1
wpf ×1