0

ローカル マシンで完全に実行されている Silverlight アプリケーションがあり、WCF サービスを開発サーバー (Windows サービスで自己ホスト) から使用しています。

バグの根本原因を見つけるために、WCF サービスの 1 つをデバッグする必要があります。サービスにデバッグ/トレース情報を追加し、仮想マシンに (さらにはローカルに) インストールしましたが、それ以来、よく知られたクロスドメイン エラーが発生します。

「URI 'http://MyVMMachine:4096/MyService' へのリクエストを試行中にエラーが発生しました。これは、適切なクロスドメイン ポリシーを設定せずにクロスドメインの方法でサービスにアクセスしようとしたことが原因である可能性があります。または、SOAP サービスに適していないポリシーです。サービスの所有者に連絡して、クロスドメイン ポリシー ファイルを公開し、SOAP 関連の HTTP ヘッダーの送信が許可されていることを確認する必要がある場合があります。このエラーは、 InternalsVisibleToAttribute 属性を使用しない Web サービス プロキシの内部型。詳細については、内部例外を参照してください。"

開発サーバーから消費する場合は正常に動作しますが、サービスを開発マシンにインストールする場合、またはローカルにインストールする場合 (Windows サービスでも自己ホストされている場合) は機能しないため、これは奇妙です。

サービスの元のコードは次のとおりです。

public partial class WindowsService : ServiceBase
{
    ServiceHost _Host;

    public WindowsService()
    {
        try
        {
            InitializeComponent();
        }
        catch (Exception exc)
        {
            Server.One.Log("Windows service initialization failed: " + exc.Message);
        }
    }

    protected override void OnStart(string[] args)
    {
        try
        {
            Server.One.Start();
            _Host = new ServiceHost(typeof(Service));
            _Host.Open();
        }
        catch (Exception exc)
        {
            Server.One.Log("Windows service start failed: " + exc.Message);
        }
    }

    protected override void OnStop()
    {
        try
        {
            if (_Host != null)
                _Host.Close();
            Server.One.Stop();
        }
        catch (Exception exc)
        {
            Server.One.Log("Windows service stop failed: " + exc.Message);
        }
    }
}

このテーマに関する Carlos Figueira の記事を読んだ後、彼のアプローチを適用してサービスを変更しましたが、まだ機能していません。

何か案は???

ありがとう!

4

1 に答える 1

0

fiddlerを試して、アプリケーションが実際にサービスを要求している場所を確認してください。

これは私に数回起こりました、そしてそれは通常サーバーポートの変更のためでした8-)

ServiceReferences.ClientConfigをサーバーポートに変更するだけです。

サービスプロジェクトの構成([Web]タブ)を確認し、そこで呼び出す場合は、特定のポートを4096に設定します。

ここに画像の説明を入力してください

于 2012-08-29T14:46:39.880 に答える