4

概要: svnに問題があり、しばらくの間「デバッグ」した後、ここからどこに行けばよいかわかりません。他の誰かが以前にこの問題に遭遇した可能性があると思います。問題は、ISPが使用している透過プロキシの背後にいることのようですが、これですべての事実が説明されるわけではありません。

詳細: DreamHostでホストされている自分のドメインのsvnリポジトリにコンピューターを接続できません。tortoise-svnのリポジトリブラウザを使用して接続していますが、アクション(フォルダの追加、ソースツリーの展開など)を実行すると、「400:不正な要求メッセージ」が表示されます。

DreamHostとsvnfaqはどちらも、問題は、ISPが設定したある種のプロキシの背後にいて、それを制御できないことである可能性があると述べています。問題は、問題なく機能する別のリポジトリがあることです。プロキシがすべてのsvn接続を停止すると想定しているので、それが本当に問題であるかどうかは少しわかりません。

一方、私の友人は別のISPを使用してうまく接続することができます。

なぜこれが起こっているのか(そして1つのレポだけで別のレポではない)、そしてここからどこに行くことができるのかについて助けていただければ幸いです。

助けてくれてありがとう。

[編集1]: 80ではなくポート81に接続しようとしましたが、DreamHost svnサーバーがそれを受け入れていないようです(「サーバーに接続できませんでした」というエラーが表示されます)。

[編集2]: svnのよくある質問に従って、誰かがhttpsを使用して接続することを提案しました。これはおそらく機能しますが、私のDreamHostアカウントには現在sslがなく、追加すると月額の追加料金がかかります。他に選択肢がない場合はおそらくそれを行いますが、可能であれば、コストを抑えるために別の解決策を見つけたいと思います。

PSこれはsvnの質問であり、この問題に遭遇する可能性が最も高いのはプログラマーであるため、これをここに投稿するかServerFaultに投稿するかはわかりませんでした。

PPS誰かに役立つ場合は、WireSharkを使用してコンピューターからホストへのトラフィックをスニッフィングしました。最後に送信されたメッセージ(私のマシンから発信されたもの)は次のとおりです。

REPORT /**** HTTP/1.1
Host: svn.***.com
User-Agent: SVN/1.6.5 (r38866)/TortoiseSVN-1.6.5.16974 neon/0.28.6
Connection: TE
TE: trailers
Content-Type: text/xml
Accept-Encoding: gzip
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Content-Length: 109
Accept-Encoding: gzip
Authorization: Basic ***=

<?xml version="1.0" encoding="utf-8"?><S:get-locks-report xmlns:S="svn:" xmlns:D="DAV:"></S:get-locks-report>
4

6 に答える 6

5

TortoiseSVNサイトでこれを見つけました: 400 Bad Request

REPORTリクエストが'...'で失敗しました'...'のREPORT:400 Bad Request(http:// ..。

あなたはDAVリクエストをブロックするファイアウォールの背後にいます。ほとんどのファイアウォールはそれを行います。管理者にファイアウォールを変更するように依頼するか、 https://svn.collab.net/repos/svn/のようにhttp://ではなくhttps://でリポジトリにアクセスします。 これにより、SSL暗号化でリポジトリに接続します。 、ファイアウォールが干渉できない(SSLポートを完全にブロックしない場合)。

于 2009-09-18T20:04:09.633 に答える
3

ドメインに設定されているDreamhostSVNを使用し、ssh+svnを介してアクセスします。このプロトコルでは、DHにSVNサーバーを設定する必要はありません。代わりに、SSH経由でアカウントにアクセスし、SVNに対してローカルシェルコマンドを実行します。

リポジトリのURLは次のようになります。

svn + ssh://yourDHusername@yourdomain.com/home/yourDHusername/svn/yourrepositoryname/

これは、DHシェルアカウントへのパスワードなしのSSHアクセスを設定した場合にのみうまく機能します。これを行うには、公開鍵と秘密鍵のペアを生成し、秘密鍵をマシンに保持し、公開鍵を〜/ .ssh/authorized_keysのDHシェルアカウントにアップロードします。これをどのように設定するかは、選択したOSによって異なります。例を参照してください。

http://blog.dreamhosters.com/kbase/index.cgi?area=138

于 2009-10-03T22:07:41.797 に答える
1

dav_svn.confの構成をチェックインし、この行SVNAdvertiseV2Protocoloffを追加できます。

このページ「SVNにコミットするときの400の不正なリクエスト」を参照できます。

于 2015-04-08T16:46:22.040 に答える
0

80以外の別のポートを介して接続を試みることができる場合、正常に機能する他のリポジトリは、別のポートにあるhttpsを使用しているに違いありません。あなたのISPはポート80で特定のリクエストをフィルタリングしています、あるいは少なくともそれは私の推測です。


アップデート:

別のポートでサーバーに接続するには、サーバーを構成して接続できるようにする必要があります。:81URLに配置するほど簡単ではありません。あなたのホストはおそらくあなたのためにこれを設定しなければならないでしょう。私はあなたのホストに確認します、時々彼らはあなたのような問題を回避するために一般的なサービスのために非標準のポートをセットアップします。

また、ISPに連絡して、ISPがそれについて何を言っているかを確認することもできます。彼らはおそらくフィルタリングを行っていることを否定するでしょうが、それは一見の価値があります。

于 2009-09-18T16:49:10.283 に答える
0

私の場合、それはTortoiseクライアントのアップグレードの問題でした。エラーが発生した1.8を実行していましたが、仮想マシンではバージョン1.8.4を実行していましたが、これは問題なく機能しました。

于 2014-09-09T05:06:10.500 に答える
0

問題は特定のフォルダに固有のものであることに気付きました。私はフォルダーに入り、すべてのサブフォルダーを選択し、すべてのフォルダーに対してUpdateコマンドを試しました(すべてを一緒に実行することは可能です)。

機能した

于 2014-10-21T13:52:26.497 に答える