C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[17]: .NET RemotingでBypass Prosy


(過去ログ 10 を表示中)

[トピック内 18 記事 (1 - 18 表示)]  << 0 >>

■1808 / inTopicNo.1)  .NET RemotingでBypass Proxy
  
□投稿者/ 黒龍 (58回)-(2007/03/07(Wed) 00:30:58)
黒龍 さんの Web サイト

分類:[.NET 全般] 

2007/03/07(Wed) 09:36:08 編集(投稿者)

どうにもハマってしまったので知恵をお貸しください。

.NET RemotingをIISでホストしているのですがProxyを経由すると諸々のエラーが発生します。イントラ環境なのでIEのLAN設定でローカルではプロクシを使用しないにすれば発生しないのですがローカルとみなされない範囲(例えば違うサブネット)ではこの回避方法が使用できません。Proxyをバイパスする設定や他の回避方法をご存じであればご教示いただけますでしょうか?
引用返信 編集キー/
■1816 / inTopicNo.2)  Re[1]: .NET RemotingでBypass Prosy
□投稿者/ 中博俊 (980回)-(2007/03/07(Wed) 09:18:13)
中博俊 さんの Web サイト
Prosyってなんじゃらほい(w

んで方法としては多分むつかしそう。
ちょっとまともに調べたことがないんだけど・・・

それよりもろもろのエラーがネットワークの情報的に何か欠落しているのかそのあたりを知りたいなぁ
引用返信 編集キー/
■1818 / inTopicNo.3)  Re[2]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (59回)-(2007/03/07(Wed) 09:35:29)
黒龍 さんの Web サイト
No1816 (中博俊 さん) に返信
> Prosyってなんじゃらほい(w
Proxyっすw
>
> んで方法としては多分むつかしそう。
> ちょっとまともに調べたことがないんだけど・・・
>
> それよりもろもろのエラーがネットワークの情報的に何か欠落しているのかそのあたりを知りたいなぁ
まずは飛んでるメッセージ等を正攻法で調べるしかないですねぇ。原因がわかっても手を出せなそうな気がしますが…。
現在出ているエラーは「TypeNAssembly から System.stringにキャストできません。」とかなんとかいうエラーです。(この辺りはプロクシ次第でいくらでも変わりそう)
引用返信 編集キー/
■1820 / inTopicNo.4)  Re[3]: .NET RemotingでBypass Prosy
□投稿者/ 中博俊 (982回)-(2007/03/07(Wed) 09:53:15)
中博俊 さんの Web サイト
セキュリティがONになっているか?
OFFにしたらどうなるか?
PROXYが何か情報を落としていないか?(特にヘッダ)(Microsoft Network Monitorとかsnifferで)
PROXYを差し替えたらどうなるか(横取り丸とかで確認)

とりあえず足掛かりはこの辺で
引用返信 編集キー/
■1825 / inTopicNo.5)  Re[4]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (60回)-(2007/03/07(Wed) 10:46:24)
黒龍 さんの Web サイト
申し訳ないです。今試すとProxy切ってもエラー自体(TypeNAssembly から System.stringに…)は出ていました。もう少し情報集めます。

引用返信 編集キー/
■1881 / inTopicNo.6)  Re[5]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (61回)-(2007/03/08(Thu) 02:37:20)
黒龍 さんの Web サイト
2007/03/08(Thu) 02:49:37 編集(投稿者)
ひとまずパケットとってみたところサーバからのレスポンスがすでに500エラーになってました。
追検証する時間が取れないのでひとまずサーバをTCPで待つコンソールアプリに変更したところ問題は発生しませんでした。

時間が取れたらミニマムな環境で追検証したいと思ってます。

>レスポンスです(キャプった内容をてけとーにフォーマット)
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
				   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
				   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" 
				   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<SOAP-ENV:Header>
		<h4:__CallContext href="#ref-3" xmlns:h4="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"/>
		<a1:LogicalCallContext id="ref-3" xmlns:a1="http://schemas.microsoft.com/clr/ns/System.Runtime.Remoting.Messaging">
			<E2ETrace.ActivityID xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
				<_a>0</_a>
				<_b>0</_b>
				<_c>0</_c>
				<_d>221</_d>
				<_e>1</_e>
				<_f>0</_f>
				<_g>96</_g>
				<_h>0</_h>
				<_i>0</_i>
				<_j>0</_j>
				<_k>250</_k>
			</E2ETrace.ActivityID>
		</a1:LogicalCallContext>
	</SOAP-ENV:Header>
	<SOAP-ENV:Body>
		<SOAP-ENV:Fault id="ref-1">
			<faultcode id="ref-5">SOAP-ENV:Server</faultcode>
			<faultstring id="ref-6">.****.System.InvalidCastException.-.&#39;TypeNAssembly&#39;.&#39;System.String&#39;?</faultstring>
			<detail xsi:type="a3:ServerFault" xmlns:a3="http://schemas.microsoft.com/clr/ns/System.Runtime.Serialization.Formatters">
				<exceptionType xsi:null="1"/>
				<message xsi:null="1"/>
				<stackTrace xsi:null="1"/>
				<exception href="#ref-7"/>
			</detail>
		</SOAP-ENV:Fault>
		<a2:InvalidCastException id="ref-7" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
			<ClassName id="ref-8">System.InvalidCastException</ClassName>
			<Message id="ref-9">a?? &#39;TypeNAssembly&#39; a?Ra?aa??a?,a?§a? ̄a??a??a?? &#39;System.String&#39; a?≪a?-a?£a?1a??a?§a??a??a??a??a?</Message>
			<Data xsi:null="1"/>
			<InnerException xsi:null="1"/>
			<HelpURL xsi:null="1"/>
			<StackTraceString id="ref-10">
				a?´a? System.Runtime.Serialization.Formatters.Soap.SoapWriter.NameEscape
							(String name)
				a?´a? System.Runtime.Serialization.Formatters.Soap.SoapWriter.Write
							(InternalElementTypeE use, String name, AttributeList attrList, String value, Boolean isNameEscape, Boolean isValueEscape)
				a?´a? System.Runtime.Serialization.Formatters.Soap.SoapWriter.WriteMemberObjectRef
							(NameInfo memberNameInfo, NameInfo typeNameInfo, Int32 idRef)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.WriteMembers
							(NameInfo memberNameInfo, NameInfo memberTypeNameInfo, Object memberData, 
								WriteObjectInfo objectInfo, NameInfo typeNameInfo, WriteObjectInfo memberObjectInfo, Boolean isAttribute)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.WriteMemberSetup
							(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo, 
								String memberName, Type memberType, Object memberData, WriteObjectInfo memberObjectInfo, Boolean isAttribute)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.Write
							(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo, 
								String[] memberNames, Type[] memberTypes, Object[] memberData, WriteObjectInfo[] memberObjectInfos)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.Write
							(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.ProcessHeaders
							(Int64 headerId)
				a?´a? System.Runtime.Serialization.Formatters.Soap.ObjectWriter.Serialize
							(Object graph, Header[] inHeaders, SoapWriter serWriter)
				a?´a? System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Serialize
							(Stream serializationStream, Object graph, Header[] headers)
				a?´a? System.Runtime.Remoting.Channels.CoreChannel.SerializeSoapMessage
							(IMessage msg, Stream outputStream, Boolean includeVersions)
				a?´a? System.Runtime.Remoting.Channels.SoapServerFormatterSink.SerializeResponse
							(IServerResponseChannelSinkStack sinkStack, IMessage msg, Boolean bClientIsClr, 
												 ITransportHeaders&#38; headers, Stream&#38; stream)
				a?´a? System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage
							(IServerChannelSinkS      ^Hpn?O".E.?4@.}.3£?y?¬A¨dE.P.u?Ii??n≫.P.yy??tack sinkStack, 
								IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, 
								IMessage&#38; responseMsg, ITransportHeaders&#38; responseHeaders, Stream&#38; responseStream)
			</StackTraceString>
			<RemoteStackTraceString xsi:null="1"/>
			<RemoteStackIndex>0</RemoteStackIndex>
			<ExceptionMethod id="ref-11">
						 8.NameEscape.System.Runtime.Serialization.Formatters.Soap, Version=2.0.0.0, Culture=neutral, 
								PublicKeyToken=b03f5f7f11d50a3a.System.Runtime.Serialization.Formatters.Soap.SoapWriter.System.String NameEscape(System.String)
			</ExceptionMethod>
			<HResult>-2147467262</HResult>
			<Source id="ref-12">System.Runtime.Serialization.Formatters.Soap</Source>
		</a2:InvalidCastException>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

引用返信 編集キー/
■1883 / inTopicNo.7)  Re[6]: .NET RemotingでBypass Prosy
□投稿者/ なちゃ (26回)-(2007/03/08(Thu) 03:06:11)
バイナリフォーマッタを使うとhttpchannelでも発生しなかったりしません?
ProxyというよりSoapFormatter絡みでなんか起こってるような気がします。

引用返信 編集キー/
■1884 / inTopicNo.8)  Re[7]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (62回)-(2007/03/08(Thu) 04:02:34)
黒龍 さんの Web サイト
No1883 (なちゃ さん) に返信
> バイナリフォーマッタを使うとhttpchannelでも発生しなかったりしません?
あ〜その手がありましたね>httpで BinaryFormatter
早速試してみます。

> ProxyというよりSoapFormatter絡みでなんか起こってるような気がします。
>
ですね。以前同様のエラーがProxy周りで発生したことがあったので早合点してました。
引用返信 編集キー/
■1931 / inTopicNo.9)  Re[8]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (63回)-(2007/03/08(Thu) 21:46:32)
黒龍 さんの Web サイト
早速試してみました。が、あまり進展はないのですが・・・
今のところBinaryFormatterでも無理でした。(サーバはメソッドまで到達せずに500を返している)

>以下ログより抜粋
System.Runtime.Serialization.SerializationException: 入力ストリームは有効なバイナリ形式ではありません開始コンテンツ (バイト): 53-79-73-74-65-6D-2E-52-75-6E-74-69-6D-65-2E-52-65 ...

Server stack trace:
場所 System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__BinaryParser input)
場所 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadSerializationHeaderRecord()
場所 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
場所 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
場所 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
場所 System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)
場所 System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)

昨日OKと報告したTCPのコンソールアプリの場合の続報ですが開発に用いているマシンではOKなのですが他のマシンで試すと
「リモート側のセキュリティの必要条件が認証中に満足されませんでした。ProtectionLevel および ImpersonationLevel を増加して実行してください」とのエラーで接続されませんでした。サーバまで到達する前にくじけているようなのですが原因が不明です。

>以下ログより抜粋
System.Security.Authentication.AuthenticationException: リモート側のセキュリティの必要条件が認証中に満足されませんでした。ProtectionLevel および ImpersonationLevel を増加して実行してください。 ---> System.ComponentModel.Win32Exception: ネットワーク ログオンに失敗しました。
--- 内部例外スタック トレースの終わり ---

Server stack trace:
場所 System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
場所 System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
場所 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.CreateAuthenticatedStream(Stream netStream, String machinePortAndSid)
場所 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.CreateSocketHandler(Socket socket, SocketCache socketCache, String machinePortAndSid)
場所 System.Runtime.Remoting.Channels.SocketCache.CreateSocketHandler(Socket socket, String machineAndPort)
場所 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)
場所 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
場所 System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
場所 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
場所 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
場所 System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)

設定で明示的にsecure="false"としてもNegotiateStreamを確立しようとしているようです。
このような状況なので代替案(TCPでのコンソール)も使えないためかなり八方塞がりです。BinaryFormatterでの接続をなんとか通したいと考えているのですが同じような経験をなされた方いませんでしょうか?

引用返信 編集キー/
■1939 / inTopicNo.10)  Re[9]: .NET RemotingでBypass Prosy
□投稿者/ 中博俊 (983回)-(2007/03/09(Fri) 10:27:17)
中博俊 さんの Web サイト
まず本気での回答はプロフェッショナルサポート利用した方がいいと思います。
MSDNインシデントでもいいです。

そのうえでIISから先に進んでいないのであれば、もしかするとCookieかもしれません。
Cookieが適切にエンコード(適切なエンコードなんて実はないんですが)されていないものが含まれるとたたき落とされます。

入力ストリームはのエラーは帰ってきたレスポンスがそもそも規定外というエラー(もちクライアント側)なので、本質的なエラーではないですね。
エラーになっているリクエスト文字列を抜き出して、私なら手で変更しながら挙動をみるかな。

後者の方はうまく行く端末と、いかない端末でID・パスワードが合致していて、認証がうまく動いているとかそういうことないですかね?


引用返信 編集キー/
■1941 / inTopicNo.11)  Re[10]: .NET RemotingでBypass Prosy
□投稿者/ 渋木宏明(ひどり) (154回)-(2007/03/09(Fri) 10:58:38)
渋木宏明(ひどり) さんの Web サイト
再現性はどんな感じなんだろう?
同じテストパターンでも発生したりしなかったりですか?

その場合、マシンやネットワーク機器を変えても発生しますかね?
ネットワーク絡みなので機器の異常というセンも考えらますよ。

引用返信 編集キー/
■1942 / inTopicNo.12)  Re[11]: .NET RemotingでBypass Prosy
□投稿者/ がんふぃーるど (3回)-(2007/03/09(Fri) 12:07:15)
がんふぃーるど さんの Web サイト
[インターネットオプション]の[セキュリティ]タブの設定は全ての端末で同じですか?
例えばゾーンが[イントラネット]の場合、設定が他と異なっているとか。
[レベルのカスタマイズ]でユーザ認証関連がどうなっているか調べてみては?
引用返信 編集キー/
■1943 / inTopicNo.13)  Re[12]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (64回)-(2007/03/09(Fri) 14:53:11)
黒龍 さんの Web サイト
中さん
> まず本気での回答はプロフェッショナルサポート利用した方がいいと思います。
> MSDNインシデントでもいいです。
ですね。問い合わせる方向で検討しています。

> 後者の方はうまく行く端末と、いかない端末でID・パスワードが合致していて、認証がうまく動いているとかそういうことないですかね?
パスワードは明示的に変えてあるので無いと思います。

渋木宏明(ひどり) さん
> 再現性はどんな感じなんだろう?
> 同じテストパターンでも発生したりしなかったりですか?
今のところ再現性は100%です。

> その場合、マシンやネットワーク機器を変えても発生しますかね?
> ネットワーク絡みなので機器の異常というセンも考えらますよ。
さすがにないと思いたいのですが可能性は0じゃないですね。ひとまず他の要因を探ってみます。


がんふぃーるど さん
> [インターネットオプション]の[セキュリティ]タブの設定は全ての端末で同じですか?
> 例えばゾーンが[イントラネット]の場合、設定が他と異なっているとか。
> [レベルのカスタマイズ]でユーザ認証関連がどうなっているか調べてみては?
次週比較してみます。

引用返信 編集キー/
■1947 / inTopicNo.14)  Re[13]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (65回)-(2007/03/09(Fri) 17:48:27)
黒龍 さんの Web サイト
続報です。

ローカルで現象を見るためにIEから叩いてみるとなぜかhttpチャネルが重複して登録されていたためのエラーのようでした。
BinaryFormatterにするために
<channel ref="http"><serverProviders><formatter ref="binary" /></serverProviders></channel>
を追加していましたがこれが不味かったようでこの定義をなくすことで通信が通るようになりました。
で、懸念事項のBinaryで通信できているかですがざっと見た感じapplication/octet-streamが指定されているんですが戻ってきているデータ自体は人が判別できるxmlっぽいデータになってました。
暗号化自体はSSLで考えているので問題ではないのですが客先の環境で件のエラー(soap周り)が出ないかどうかはやってみるしかなさそうです。ひとまずこの状況でトライしようと思います。

諸々のご尽力ありがとうございました。

引用返信 編集キー/
■1953 / inTopicNo.15)  Re[14]: .NET RemotingでBypass Prosy
□投稿者/ 中博俊 (985回)-(2007/03/09(Fri) 22:59:18)
中博俊 さんの Web サイト
おこらないでね。りゅうちゃん(^^

予断による絞り込みの失敗例ですな。(^^;;;

引用返信 編集キー/
■1960 / inTopicNo.16)  Re[15]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (66回)-(2007/03/10(Sat) 16:00:09)
黒龍 さんの Web サイト
No1953 (中博俊 さん) に返信
> おこらないでね。りゅうちゃん(^^
>
> 予断による絞り込みの失敗例ですな。(^^;;;
>
全くその通りです^^;
思い込みで動かず地道に作業するのが一番の早道ですね。(まだ行けたわけではないですが^^;;)
引用返信 編集キー/
■2018 / inTopicNo.17)  Re[16]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (67回)-(2007/03/13(Tue) 22:23:42)
黒龍 さんの Web サイト
結果報告です。
件のエラーは発生しませんでした。なんだかんだでタイトルと全然違う内容になっちゃいましたがひとまずクローズさせていただこうと思います。皆様ありがとうございました。
解決済み
引用返信 編集キー/
■2026 / inTopicNo.18)  Re[17]: .NET RemotingでBypass Prosy
□投稿者/ 黒龍 (68回)-(2007/03/14(Wed) 16:59:36)
黒龍 さんの Web サイト
解決済みですがさらに補足です。

>なぜかhttpチャネルが重複して登録されていたため

この原因ですがIISでのホストはWeb.Configに記述するだけでOKなのにTCPリモーティングと同様に
System.Runtime.Remoting.RemotingConfiguration.Configure(AppDomain.CurrentDomain.BaseDirectory + @"\Web.Config", true)
していたことによるエラーでした。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -