7

私は、データを取得して MVC3 Action メソッドを呼び出し、取得したデータをパラメータとしてそのアクション メソッドに渡すコンソール アプリケーションに取り組んでいます。しかし、私の問題は、コンソールアプリケーションがデータが正常に通過したことを知る方法です\ MVCアクションメソッドが正しく呼び出され、サーバーでmvcアプリケーションが実行されているかどうか

ここに私のコードがあります:

public static void Main()
{
// Mvc application object intialization
                HomeController object_Mail = new HomeController();
            // Mvc action method call
           object_Mail.mailgateway(mvcemails); //mvcemails parameter passed to Actionmethod               
}

私を案内してください...

ありがとう、ラージ

4

3 に答える 3

10

ここで行ったようにMVCアクションを呼び出すことはできません。デスクトップアプリケーションとWebアプリケーションは無関係です。これらは2つの異なるエンティティとして存在します。デスクトップアプリケーションからMVCアクションを呼び出す必要がある場合は、他のWebを呼び出すのと同じです。デスクトップアプリケーションを使用するエンドポイントであり、HTTPRequestを作成する必要があります。

デスクトップアプリケーションで、次のようにHTTPRequestを作成します。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+ <your mvc action endpoint> )
request.Method = "GET";
//specify other request properties

try
{
    response = (HttpWebResponse)request.GetResponse();
}

アクション、つまりアクションパラメータにデータを渡したい場合は、次のようにURLを作成できます。

GetRequestの場合

string url = string.Format(
            "http://mysite/somepage?key1={0}&key2={1}",
            Uri.EscapeDataString("value1"),
            Uri.EscapeDataString("value2"));

および POSTREQUESTの場合

webRequest.Method = "POST";
var data=string.Format("key1={0}&key2={1}",Uri.EscapeDataString("value1"),Uri.EscapeDataString("value2")");
StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write();
requestWriter.Close();
于 2012-07-25T05:57:53.633 に答える
0

アクション メソッドを呼び出すには、WebClient または HttpWebRequest クラスを使用する必要があると思います。

于 2012-07-25T05:59:24.277 に答える
0

あなたがやっている方法でこれを行うことは可能です。ただし、ほとんどの Web アプリケーションには、 Moqのようなフレームワークを使用してスタブ化またはモック化する必要がある多くの依存関係があります。

単体テスト ライブラリで MVC アプリを含む DLL を頻繁に参照します。これは、説明しているシナリオと同等です。Moq を使用して、要求コンテキストと、セッション状態、データベース リポジトリなど、コントローラーが必要とするその他の依存関係を提供します。

偽の依存関係を使用すると、コントローラー アクションが役に立たなくなる可能性があります。その場合、他の回答のアドバイスに従います。

これは大きくて複雑なトピックであり、asp.net mvc の単体テストに関する多くのブログやその他のスタック オーバーフローの質問で議論されています。

于 2012-07-25T06:12:05.570 に答える