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

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

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

Re[6]: 別サイトへ遷移させたい


(過去ログ 73 を表示中)

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

■42996 / inTopicNo.1)  別サイトへ遷移させたい
  
□投稿者/ nana* (1回)-(2009/10/26(Mon) 15:43:36)

分類:[.NET 全般] 

2009/10/26(Mon) 15:45:07 編集(投稿者)
初心者です。
よろしくお願いします。


VS2008 framework3.5
C# 

あるサイト(WebApplication/Aサイト)で
別サイト(Bサイト)の関数を呼び出し、
Bサイトのある画面へリダイレクトさせる処理を行いたいと考えています。

そこで、サイトを二つ作成し以下のようなコードを書いたのですが
404エラーになります。
try -Catchでエラーをキャッチすることが出来ず、
詳細原因が分からないので苦慮しております。
Visual Studioでデバッグする場合、動的ポートが割り当てられるために
「http://・・」形式でアドレスを記述することができません。
原因・回避策に関して何かアドバイスをお願いします。


※記述したコード
Aサイト
//Bサイトの関数呼び出し
protected void btnRedirect_Click(object sender, EventArgs e)
{
	try
        {
            WebFormB webB = new WebFormB();
            webBRedirectPage(this);
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }
}


Bサイト
public void RedirectPage(System.Web.UI.Page webPage)
{
       try
       {
      //Redirectの第二引数endResponseをtrueにするとThread.AboerExceptionが発生する。
            webPage.Response.Redirect("/BSite/RedirectOK.aspx", false);    
       }
       catch (Exception ex)
       {
            System.Diagnostics.Debug.Print(ex.Message);
       }

}

引用返信 編集キー/
■42997 / inTopicNo.2)  Re[1]: 別サイトへ遷移させたい
□投稿者/ nana* (2回)-(2009/10/26(Mon) 15:44:28)
2009/10/26(Mon) 15:45:37 編集(投稿者)
間違えました。

引用返信 編集キー/
■42998 / inTopicNo.3)  Re[2]: 別サイトへ遷移させたい
□投稿者/ nana* (3回)-(2009/10/26(Mon) 16:02:05)
2009/10/26(Mon) 16:03:57 編集(投稿者)

もう少し詳しくテスト方法を書きます。
テストはWebサイトを作成しAサイトとBサイトを追加してテストしています。
Aサイトをスタートアップに設定して処理を行うと404エラーが表示されます。
このとき、アドレスバーに表示されるURLは「http://localhost:xxxx/BSite/RedirectOK.aspx」となっています。
Aサイトをスタートアップにした状態で「http://localhost:xxxx/BSite/RedirectOK.aspx」をアドレスバーに打ち込むとエラーになります。
Bサイトをスタートアップに設定すると「BSite/RedirectOK.aspx」を開くことができます。


よろしくお願いします。
引用返信 編集キー/
■43003 / inTopicNo.4)  Re[3]: 別サイトへ遷移させたい
□投稿者/ 純@WAS (4回)-(2009/10/26(Mon) 17:14:44)
> Aサイトをスタートアップにした状態で「http://localhost:xxxx/BSite/RedirectOK.aspx」をアドレスバーに打ち込むとエラーになります。
> Bサイトをスタートアップに設定すると「BSite/RedirectOK.aspx」を開くことができます。

このlocalhost:xxxxの部分が気になったのですが…
Bサイトもポート番号xxxxでビルド(「ビルド」という表現は適切ではないかもしれません)されるのでしょうか…

現象を見た感じAサイトがポート番号xxxxでビルドされていて、
Bサイトはビルドされていないような気がします(確証は持てませんが)。

そのため、Aサイトをスタートアップに置いたときにBサイトのアドレスを入力するとエラーになるのではないのでしょうか?
それでBサイトをスタートアップに置いたときにBサイトはポート番号xxxxでビルドされるので、正常に表示されている…

私の予想が正しければBサイトをスタートアップに置いたときに、AサイトのURLを叩くと404エラーになったりしませんか?

見当違いなら申し訳ございません。
引用返信 編集キー/
■43004 / inTopicNo.5)  Re[4]: 別サイトへ遷移させたい
□投稿者/ nana* (4回)-(2009/10/26(Mon) 17:21:36)
No43003 (純@WAS さん) に返信

> このlocalhost:xxxxの部分が気になったのですが…
> Bサイトもポート番号xxxxでビルド(「ビルド」という表現は適切ではないかもしれません)されるのでしょうか…
>
> 現象を見た感じAサイトがポート番号xxxxでビルドされていて、
> Bサイトはビルドされていないような気がします(確証は持てませんが)。

純@WASさん、お返事どうもありがとうございます。
以下の方法で確認してみました。
@Aサイト、Bサイトともに「動的ポートの使用」を「false」にする。
AAサイト、Bサイトのポート番号で同じものを指定
BAサイト、Bサイトのプロパティページで「ソリューションの一部としてWebサイトをビルドする」にチェックが入っていることを確認
Cソリューション全体をビルド
スタートアップにAサイトを指定、Bサイトのアドレスを直接指定→エラー
スタートアップにBサイトを指定、Aサイトのアドレスを直接指定→エラー


> そのため、Aサイトをスタートアップに置いたときにBサイトのアドレスを入力するとエラーになるのではないのでしょうか?
> それでBサイトをスタートアップに置いたときにBサイトはポート番号xxxxでビルドされるので、正常に表示されている…
>
> 私の予想が正しければBサイトをスタートアップに置いたときに、AサイトのURLを叩くと404エラーになったりしませんか?
>
> 見当違いなら申し訳ございません。

純@WASさんの予想通りエラーになります。
どうやらこのあたりに鍵がありそうですね・・・。

引用返信 編集キー/
■43009 / inTopicNo.6)  Re[5]: 別サイトへ遷移させたい
□投稿者/ 純@WAS (5回)-(2009/10/26(Mon) 18:19:32)
根本的解決にはなりませんが…
以下の方法で繋がりました。
ただしIISがインストールされていることが前提となります。

恐らくVS2008を使っていると思いますので…
1:両Webアプリのプロパティを開いて下さい。
2:Webのタブを開いて下さい
3:「IISサーバの使用」のラジオボタンにチェックを入れてください
4:各プロパティの「プロジェクトのURL」に以下の内容を入力して下さい
サイトA:localhost/ASite
サイトB:localhost/BSite
(サイト名はnanaさんの投稿内容から抜粋です)
5:「仮想ディレクトリの作成」ボタンを押下して下さい。
6:コンパネから管理ツール→IISの順番で移動してください
7:作成された仮想ディレクトリのプロパティを開いて下さい
8:ディレクトリセキュリティに対して、「Windows統合認証」を付与して下さい
IISのバージョンによって手順が違うので…もしかしたらコレでは出来ないかもしれません…

これでソリューションをリビルドして、実行して下さい。

注)空くまでも私の環境で検証した結果なので、nanaさんの環境、他のアドバイザ様の環境では保証し兼ねます。

VSの開発ポートからの方法は…時間があるときに調べてみます。いつか私も直面しそうなので。
引用返信 編集キー/
■43013 / inTopicNo.7)  Re[6]: 別サイトへ遷移させたい
□投稿者/ 純@WAS (7回)-(2009/10/26(Mon) 18:49:36)
あ…できました…

まず…
>Aサイト、Bサイトのポート番号で同じものを指定
コレはNGです…内部でポートの競合を防ぐために自動で再採番されているのが確認できました。
恐らくURL直打ちで404が発生したのはこれが原因だと推測しています。

Aサイトでxxxxを使っているので、Bサイトはyyyyとでもしておきます。

>webPage.Response.Redirect("/BSite/RedirectOK.aspx", false);
この件ですが…
/BSite/RedirectOK.aspx
と入力すると、仮想パスになるので、同一Webアプリ内にあるものだとVSは思ってしまうようです。
(実際にチョコチョコ検証してみました)

なので、絶対パス(URLフルパス)で指定してください。
「Response.Redirect("http://localhost:yyyy/BSite/RedirectOK.aspx",false);」

多分これで動くはずです。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -