5

Exchange Webサービス(EWS 1.1 API)を使用して電子メールを送信するコードがあります。次のようなハードコードされたパラメータ値を使用する場合も例外はありません。

service.AutodiscoverUrl("me@mydomain.com",
    delegate
    {
    return true;
    });

しかし、変数を使用しようとすると、URLの検出中に「自動検出サービスが見つかりませんでした」というエラーが発生します。

string userName = "me@mydomain.com";
service.AutodiscoverUrl(userName,
    delegate
    {
    return true;
    });

autodiscoverurlメソッドで変数を使用する方法はありますか?私は何が間違っているのですか?

サンジェイ

4

4 に答える 4

8

これが問題を引き起こしている可能性はほとんどありません。通常、AutoDiscoverが失敗した場合は、無効な資格情報またはネットワーク接続の問題が原因です。

ExchangeServiceインスタンス(MSDNの記事)でトレースを有効にして、何が起こっているかを確認します。

于 2011-10-21T22:08:19.097 に答える
2

この投稿は数年前のものだと思いますが、単にドキュメント化のために追加のソリューションを提供しています。

この動作のもう1つの考えられる原因は、EWSサーバーがTLS 1.0のみをサポートしているときに、クライアントがTLS1.2接続を強制しようとしていることです。私はこの動作を調査することを放棄しようとしていました-EWSアプリは1つのボックスで動作し、同じアプリは別のボックスで失敗しました(同じメールボックスに移動します)-そして問題は、1台のマシンがTLS1.0をネゴシエートできることでした。もう1つはTLS1.2のみを実行できましたが、失敗しました。レジストリでクライアントTLS1.0アウトバウンド接続を有効にすると(、DWORD値「有効」を0x1に設定すると、問題が修正されました。再起動は必要ありません。HKLM\System\CCS\Services\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client

于 2017-07-20T20:38:24.310 に答える
0

そして、別の解決策を追加するだけです-上記のDavid Wとは逆の問題のために苦労していました-私のExchangeサーバーはTLS1.2のみをサポートしていましたが、私のアプリ(.net 4.5)はデフォルトで1.0のみをサポートしていました。

追加することで修正:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

私のアプリのスタートアップコードに。.net4.6以降ではデフォルトで有効になっていると思います

私が得ていた特定のエラーは次のとおりです。

<Trace Tag="AutodiscoverConfiguration" Tid="1" Time="2018-10-29 15:32:40Z">
 failed: WebException (The underlying connection was closed: An unexpected error occurred on a send.)
</Trace>
Exception thrown: 'Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException' in Microsoft.Exchange.WebServices.dll
于 2018-10-29T15:34:02.600 に答える
0

同じ問題が発生し、.ToString()の追加を解決しました。

$Credential = Get-Credential
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$Service.Credentials = New-Object System.Net.NetworkCredential($Credential.UserName.ToString(),$Credential.GetNetworkCredential().password.ToString())
$Service.AutodiscoverUrl($Credential.UserName.ToString(), {$True})
于 2020-09-10T14:16:39.460 に答える